Ricerca elastica

Elasticsearch Reindicizza tutti gli indici e controlla lo stato

Elasticsearch Reindicizza 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 modifichi i dati in un indice Elasticsearch, può portare a tempi di inattività poiché la funzionalità viene completata e i dati vengono reindicizzati.

Questo tutorial ti darà un modo molto migliore di aggiornare gli indici senza subire tempi di inattività con l'origine dati esistente. Utilizzando l'API di re-indicizzazione Elasticsearch, copieremo i dati da una fonte specifica a un'altra.

Cominciamo.

NOTA: Prima di iniziare, le operazioni di reindicizzazione richiedono molte risorse, specialmente su indici di grandi dimensioni. Per ridurre al minimo il tempo necessario per la reindicizzazione, disabilitare number_of_replicas impostando il valore su 0 e abilitarli una volta completato il processo.

Abilita _Campo sorgente

L'operazione di reindicizzazione richiede che il campo sorgente sia abilitato su tutti i documenti nell'indice sorgente. Nota che il campo sorgente 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

“mappature”:
"_fonte":
"abilitato": vero


Reindicizza tutti i documenti

Per reindicizzare i documenti, è necessario specificare l'origine e la destinazione. L'origine e la destinazione possono essere un indice esistente, un alias di indice e flussi di dati. Puoi usare gli indici dal cluster locale o remoto.

NOTA: Affinché l'indicizzazione avvenga correttamente, sia l'origine che la destinazione non possono essere simili. È inoltre necessario configurare la destinazione come richiesto prima della reindicizzazione perché non applica le impostazioni dall'origine o da qualsiasi modello associato.

La sintassi generale per la reindicizzazione è la seguente:

POST /_reindex

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

PUT /source_index

"settings": "number_of_replicas": 0, "number_of_shards": 1,
"mappings": "_source": "enabled": true,"alias":
"alias_1": ,
"alias_2":
"filtro": "termine":
"utente.id": "kibana"
,"instradamento": "1"


Il comando cURL è:

curl -XPUT "http://localhost:9200/source_index" -H 'Content-Type: application/json' -d'  "settings": "number_of_replicas": 0, "number_of_shards": 1,  "mappings" : "_source": "enabled": true,"alias":      "alias_1": ,    "alias_2":       "filter": "term":         "user.id": "kibana"      ,"routing": "1"      '

Ora per l'indice di destinazione (puoi usare il comando sopra e cambiare alcune cose o usare quello indicato di seguito):

PUT /indice_destinazione

"settings": "number_of_replicas": 0, "number_of_shards": 1,
"mapping": "_source": "enabled": true,"alias":
"alias_3": ,
"alias_4":
"filtro": "termine":
"utente.id": "kibana"
,"instradamento": "1"


Come sempre, gli utenti di cURL possono utilizzare il comando:

curl -XPUT "http://localhost:9200/destination_index" -H 'Content-Type: application/json' -d'  "settings": "number_of_replicas": 0, "number_of_shards": 1,  "mappings" : "_source": "enabled": true,"alias":      "alias_3": ,    "alias_4":       "filter": "term":         "user.id": "kibana"      ,"routing": "1"      '

Ora abbiamo gli indici che vogliamo usare, possiamo quindi passare alla reindicizzazione dei documenti.

Considera la richiesta di seguito che copia i dati da source_index a destination_index:

POST _reindicizzare

"fonte":
"indice": "indice_origine"
,
"dest":
"indice": "indice_destinazione"

Il comando cURL per questo è:

curl -XPOST "http://localhost:9200/_reindex" -H 'Content-Type: application/json' -d'  "source":     "index": ".kibana"  ,  "dest":      "index": "destination_index"  '

L'esecuzione di questo comando dovrebbe fornire informazioni dettagliate sull'operazione eseguita.

NOTA: Source_index dovrebbe contenere dati.


"preso": 2836,
"timed_out": false,
"totale" : 13059,
"aggiornato": 0,
"creato": 13059,
"cancellato": 0,
"lotti": 14,
"version_conflicts": 0,
"noops": 0,
"riprova":
"alla rinfusa": 0,
"cerca": 0
,
"throttled_millis": 0,
"richieste_al_secondo": -1.0,
"throttled_until_millis": 0,
"fallimenti" : [ ]

Verifica dello stato di reindicizzazione

Puoi visualizzare lo stato delle operazioni di reindicizzazione semplicemente utilizzando _tasks. Si consideri ad esempio la richiesta di seguito:

GET /_compitita?dettagliato=vero&azioni=*reindicizza&gruppo_da=genitori

Il comando cURL è:

curl -XGET "http://localhost:9200/_tasks?detail=true&actions=*reindicizza&group_by=genitori"

Questo dovrebbe darti informazioni dettagliate sul processo di reindicizzazione come mostrato di seguito:


"compiti" :
"FTd_2iXjSXudN_Ua4tZhHg:51847":
"nodo": "FTd_2iXjSXudN_Ua4tZhHg",
"id": 51847,
"tipo": "trasporto",
"azione": "indici:dati/scrittura/reindicizza",
"stato":
"totale" : 13059,
"aggiornato": 9000,
"creato": 0,
"cancellato": 0,
"lotti": 10,
"version_conflicts": 0,
"noops": 0,
"riprova":
"alla rinfusa": 0,
"cerca": 0
,
"throttled_millis": 0,
"richieste_al_secondo": -1.0,
"throttled_until_millis": 0
,
"descrizione": "reindicizza da [indice_origine] a [indice_destinazione][_doc]",
"start_time_in_millis": 1611247308063,
"running_time_in_nanos": 2094157836,
"cancellabile": vero,
"intestazioni":


Conclusione

Abbiamo coperto tutto ciò che devi sapere sull'utilizzo dell'API Elasticsearch Reindexing per copiare documenti da un indice (origine) a un altro (destinazione). Sebbene ci sia altro nell'API di reindicizzazione, questa guida dovrebbe aiutarti a iniziare.

Le migliori distribuzioni Linux per il gioco nel 2021
Il sistema operativo Linux ha fatto molta strada dal suo aspetto originale, semplice e basato su server. Questo sistema operativo è notevolmente migli...
Come acquisire e riprodurre in streaming la tua sessione di gioco su Linux
In passato, giocare era considerato solo un hobby, ma con il tempo l'industria dei giochi ha visto una crescita enorme in termini di tecnologia e nume...
I migliori giochi da giocare con il tracciamento delle mani
Oculus Quest ha recentemente introdotto la grande idea del tracciamento manuale senza controller. Con un numero sempre crescente di giochi e attività ...