ElasticSearch ReindEx tutti gli indici e controlla lo stato

ElasticSearch ReindEx tutti gli indici e controlla lo stato
Quando lavori con i database, dovrai inevitabilmente apportare modifiche come l'aggiunta, la rimozione e la modifica dei dati.

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_1

“Mappings”:
"_fonte":
"abilitato": vero


ReindEx 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 /_Reindex

Iniziamo creando due indici. Il primo sarà la fonte e l'altro sarà la destinazione.

Put /source_index

"Impostazioni": "Number_of_Replicas": 0, "Number_of_Shards": 1,
"Mappings": "_source": "abilitato": true, "aliases":
"alias_1": ,
"alias_2":
"filtro": "termine":
"utente.id ":" kibana "
, "routing": "1"


Il 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_index

"Impostazioni": "Number_of_Replicas": 0, "Number_of_Shards": 1,
"Mappings": "_source": "abilitato": true, "aliases":
"alias_3": ,
"alias_4":
"filtro": "termine":
"utente.id ":" kibana "
, "routing": "1"


Come 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 _Reindex

"fonte":
"INDICE": "Source_index"
,
"dest":
"INDICE": "Destination_index"

Il 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.


"Take": 2836,
"timed_out": false,
"Totale": 13059,
"Aggiornato": 0,
"Creato": 13059,
"Eliminato": 0,
"Batches": 14,
"versione_conflitti": 0,
"Noops": 0,
"Rittani":
"Bulk": 0,
"Cerca": 0
,
"throttled_millis": 0,
"Richiedi_per_second": -1.0,
"throttled_until_millis": 0,
"Failure": []

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 = genitori

Il 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:


"compiti" :
"Ftd_2ixjsxudn_ua4tzhhg: 51847":
"nodo": "ftd_2ixjsxudn_ua4tzhhg",
"ID": 51847,
"tipo": "trasporto",
"Azione": "Indici: dati/scrittura/reindex",
"Stato":
"Totale": 13059,
"Aggiornato": 9000,
"Creato": 0,
"Eliminato": 0,
"Batches": 10,
"versione_conflitti": 0,
"Noops": 0,
"Rittani":
"Bulk": 0,
"Cerca": 0
,
"throttled_millis": 0,
"Richiedi_per_second": -1.0,
"throttled_until_millis": 0
,
"Descrizione": "ReinDex da [source_index] a [destinazione_index] [_ doc]",
"Start_time_in_millis": 1611247308063,
"Running_time_in_nanos": 2094157836,
"cancellabile": vero,
"intestazioni":


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.