Quando si modificano i dati in un indice ElasticSearch, può portare a tempi di inattività man mano che la funzionalità viene completata e i dati vengono reindexed.
Questo tutorial ti darà un modo molto migliore per aggiornare gli indici senza sperimentare tempi di inattività con l'origine dati esistente. Utilizzando l'API di reindexing di ElasticSearch, copriremo i dati da una fonte specifica a un'altra.
Iniziamo.
NOTA: Prima di iniziare, le operazioni di reindxing sono pesanti, in particolare su grandi indici. Per ridurre al minimo il tempo richiesto per il reindExing, Disabilita Number_OF_Replicas impostando il valore su 0 e abilitali una volta che il processo è completo.
Abilita il campo _source
L'operazione di reindxing richiede che il campo di origine sia abilitato su tutti i documenti nell'indice di origine. Si noti che il campo di origine non è indicizzato e non può essere cercato ma è utile per varie richieste.
Abilita il campo _source aggiungendo una voce come mostrato di seguito:
Put indice_1ReindEx Tutti i documenti
Per reindrare i documenti, dobbiamo specificare l'origine e la destinazione. L'origine e la destinazione possono essere un indice, un alias indice e flussi di dati esistenti. È possibile utilizzare gli indici del cluster locale o remoto.
NOTA: Perché l'indicizzazione si verifichi correttamente, sia l'origine che la destinazione non possono essere simili. È inoltre necessario configurare la destinazione come richiesto prima della reindExing perché non applica le impostazioni dalla sorgente o da qualsiasi modello associato.
La sintassi generale per il reindExing è come:
Post /_ReindexIniziamo creando due indici. Il primo sarà la fonte e l'altro sarà la destinazione.
Put /source_indexIl comando Curl è:
Curl -xput "http: // localhost: 9200/source_index" -h 'content -type: applicazione/json' -d '"impostazioni": "numera_of_replicas": 0, "numero_of_shards": 1, "mapping" : "_source": "anabled": true, "aliases": "alias_1": , "alias_2": "filtro": "termine": "utente.id ":" kibana "," routing ":" 1 " 'Ora per l'indice di destinazione (è possibile utilizzare il comando sopra e cambiare alcune cose o utilizzare quello indicato di seguito):
Put /destinazione_indexCome sempre, gli utenti Curl possono utilizzare il comando:
Curl -xput "http: // localhost: 9200/destinazione_index" -h 'content -type: applicazione/json' -d '"impostazioni": "numera_of_replicas": 0, "numero_of_shards": 1, "mapping" : "_source": "anabled": true, "aliases": "alias_3": , "alias_4": "filtro": "termine": "utente.id ":" kibana "," routing ":" 1 " 'Ora, abbiamo gli indici che vogliamo usare, possiamo quindi andare avanti per reinsex dei documenti.
Considera la richiesta di seguito che copia i dati da Source_index a Destination_Index:
Post _ReindexIl comando Curl per questo è:
Curl -xpost "http: // localhost: 9200/_reindex" -H 'Content -Type: Application/Json' -d '"Source": "Index": ".kibana "," dest ": " indice ":" destinazione_index " 'L'esecuzione di questo comando dovrebbe fornire informazioni dettagliate sull'operazione effettuata.
NOTA: La sorgente_index dovrebbe avere dati.
Controllo dello stato di reindicizzazione
È possibile visualizzare lo stato delle operazioni di reindxing semplicemente usando _tasks. Ad esempio, considera la richiesta di seguito:
Get /_tasks?dettagliato = true & azioni =*reindex & group_by = genitoriIl comando Curl è:
Curl -Xget "http: // localhost: 9200/_tasks?dettagliato = true & azioni =*reindEx & group_by = genitori "Ciò dovrebbe darti informazioni dettagliate sul processo di reindice come mostrato di seguito:
Conclusione
Abbiamo coperto tutto ciò che devi sapere sull'uso dell'API ReindExing di Elasticsearch per copiare i documenti da un indice (origine) a un'altra (destinazione). Sebbene ci sia di più nell'API di reindxing, questa guida dovrebbe aiutarti a iniziare.