2016-03-02 14 views
5

Ora sto utilizzando Google Datastore per il database della mia azienda. Oggi ho creato un indice e questo è elencato con successo in "Indice". Ma la dimensione e le entità dell'indice che ho creato sono vuote.Come aggiungere un indice composito in Google Datastore?

La documentazione di Google Datastore indica che l'indice è autogenerato, ma non lo era.

C'è qualche comando o qualcosa da fare per generare l'indice?

L'immagine qui sotto è uno screenshot.

Quello superiore è il nuovo. Quello sotto è già usato.

enter image description here

+1

Ciao e benvenuto su StackOverflow, ho modificato la tua domanda un po 'per portare l'immagine direttamente nella domanda e chiarito un po' l'ortografia. Se ritieni di aver alterato ingiustamente il significato del tuo post, rispondi a questo commento e scrivimi con @ Magisch

+0

@Magisch Grazie per la gentilezza. Quello che hai fatto è quello che volevo. :) –

risposta

6

È un dato di fatto entità esistenti non saranno indicizzati automaticamente. Devi caricare e salvare tutte le tue vecchie entità (senza indice) per avere gli indici necessari creati per queste entità.

Si noti, tuttavia, che la modifica di una proprietà da non indicizzata al indicizzato non lascia impregiudicati i entità esistenti che potrebbero essere stati creati prima della modifica . Il filtraggio delle query sulla proprietà non restituirà tali entità esistenti , poiché le entità non sono state scritte nell'indice della query al momento della creazione. Per rendere le entità accessibili tramite le query future , è necessario riscriverle all'archivio dati in modo che vengano immesse negli indici appropriati . Cioè, è necessario eseguire il seguente per ciascuna entità esistente:

Recuperare (ottenere) l'entità dal Datastore. Scrivi (inserisci) l'entità di nuovo nel Datastore. Analogamente, la modifica di una proprietà da indicizzata a nonindexata interessa solo le entità successivamente scritte nel Datastore. Le voci di indice per qualsiasi entità esistente con quella proprietà saranno finché non saranno aggiornate o eliminate. Per evitare i risultati indesiderati di , è necessario eliminare il codice di tutte le query che filtrano o ordinare dalla proprietà (ora non indicizzata). (source)

Si noti che la documentazione non dice esplicitamente la stessa cosa per gli indici composti. Quando si distribuisce un nuovo indice composito, l'indice verrà visualizzato nella console degli sviluppatori come "edificio" fino a quando non raggiunge lo stato di "servizio". Non sono sicuro di cosa stia costruendo lì, di solito ho ri-salvato tutte le mie entità e tutto ha funzionato come dovrebbe.

generato automaticamente è una parola chiave che indica se è stato creato manualmente questo indice o se è stato creato dal server di sviluppo quando hai creato una query che richiedeva questo indice. Questo non è in alcun modo collegato a come e quando gli indici vengono creati per le entità.

L'elemento <datastore-indexes> ha attributo un AutoGenerate che controlla se il file deve essere considerato insieme configurazione indice generato automaticamente. Vedere la sezione Uso dell'indice automatico Configurazione di seguito.(source)

quando è stato creato un nuovo indice e si desidera che questo indice per tutte le entità esistenti vi consiglio di creare una query del cursore per gestire questa situazione. Di solito espongo questa query in un back-end di amministrazione e la query viene eseguita finché non ci sono più risultati. Perché esporre la cosa? Se si dispone di molte entità, questo lavoro potrebbe essere più lungo dei 60 secondi consentiti nel frontend o 10 minuti nel back-end. Esponendo questo posso usare l'istanza del front end e non dovermi preoccupare delle restrizioni temporali.

Problemi correlati