Elasticsearch reindex alle indekser og sjekker statusen

Elasticsearch reindex alle indekser og sjekker statusen
Når du jobber med databaser, trenger du uunngåelig å gjøre endringer som å legge til, fjerne og endre data.

Når du endrer data i en Elasticsearch -indeks, kan det føre til driftsstans når funksjonaliteten blir fullført og dataene blir reindexed.

Denne opplæringen vil gi deg en mye bedre måte å oppdatere indekser uten å oppleve noen driftsstans med den eksisterende datakilden. Ved hjelp av elasticsearch re-indekserings-API, vil vi kopiere data fra en spesifikk kilde til en annen.

La oss komme i gang.

MERK: Før vi kommer i gang, er reindekseringsoperasjoner ressurstunge, spesielt på store indekser. For å minimere tiden som kreves for gjenindeksering, deaktiver Number_of_replicas ved å sette verdien til 0 og aktivere dem når prosessen er fullført.

Aktiver _Source -feltet

Reindekseringsoperasjonen krever at kildefeltet er aktivert på alle dokumentene i kildeindeksen. Merk at kildefeltet ikke er indeksert og ikke kan søkes, men er nyttig for forskjellige forespørsler.

Aktiver _ -kildefeltet ved å legge til en oppføring som vist nedenfor:

Sett indeks_1

“Mappings”:
"_Source":
"Aktivert": True


Reindex alle dokumenter

For å reindex dokumenter, må vi spesifisere kilden og destinasjonen. Kilde og destinasjon kan være et eksisterende indeks-, indeksalias og datastrømmer. Du kan bruke indekser fra den lokale eller en ekstern klynge.

MERK: For at indeksering skal skje med hell, kan både kilde og destinasjon ikke være lik. Du må også konfigurere destinasjonen etter behov før reindeksering fordi den ikke bruker innstillinger fra kilden eller tilknyttet mal.

Den generelle syntaksen for reindeksering er som:

POST /_REINDEX

La oss starte med å lage to indekser. Den første vil være kilden, og den andre vil være destinasjonen.

Put /source_index

"Innstillinger": "number_of_replicas": 0, "number_of_shards": 1,
"Mappings": "_Source": "Enabled": true, "aliases":
"alias_1": ,
"alias_2":
"filter": "term":
"bruker.id ":" Kibana "
, "ruting": "1"


Curl -kommandoen er:

Curl -xput "http: // localhost: 9200/source_index" -h 'innholdstype: applikasjon/json' -d '"innstillinger": "number_of_replicas": 0, "number_of_shards": 1, "mappings" : "_Source": "Enabled": true, "aliaser": "alias_1": , "alias_2": "filter": "term": "bruker.id ":" kibana "," ruting ":" 1 " '

Nå for destinasjonsindeksen (du kan bruke kommandoen ovenfor og endre noen få ting eller bruke den som er gitt nedenfor):

Put /destination_index

"Innstillinger": "number_of_replicas": 0, "number_of_shards": 1,
"Mappings": "_Source": "Enabled": true, "aliases":
"alias_3": ,
"alias_4":
"filter": "term":
"bruker.id ":" Kibana "
, "ruting": "1"


Som alltid kan Curl -brukere bruke kommandoen:

Curl -xput "http: // localhost: 9200/destination_index" -h 'Content -Type: Application/Json' -D '"Innstillinger": "Number_of_replicas": 0, "Number_of_shards": 1, "Mappings" : "_Source": "aktivert": true, "aliaser": "alias_3": , "alias_4": "filter": "term": "bruker.id ":" kibana "," ruting ":" 1 " '

Nå har vi indeksene vi vil bruke, vi kan deretter gå videre for å gjeninnføre dokumentene.

Vurder forespørselen nedenfor som kopierer dataene fra Source_index til Destination_index:

POST _REINDEX

“Kilde”:
"Indeks": "Source_index"
,
"dest":
"Indeks": "Destination_index"

Curl -kommandoen for dette er:

Curl -xpost "http: // localhost: 9200/_reindex" -h 'Content -Type: Application/Json' -D '"Source": "Index": ".kibana "," dest ": " index ":" destination_index " '

Å utføre denne kommandoen skal gi deg detaljert informasjon om operasjonen som er utført.

MERK: Source_index skal ha data.


"Tok": 2836,
"TIMED_OUT": FALSE,
"Totalt": 13059,
"Oppdatert": 0,
"opprettet": 13059,
"Slettet": 0,
"Batches": 14,
"versjon_conflicts": 0,
"Noops": 0,
"Forsøk":
"Bulk": 0,
"Søk": 0
,
"Throttled_millis": 0,
"Forespørsler_per_second": -1.0,
"Throttled_until_millis": 0,
"Feil": []

Kontrollerer om reindekseringsstatus

Du kan se statusen til reindekseringsoperasjonene ved å bruke _tasker. Vurder for eksempel forespørselen nedenfor:

Få /_tasker?Detaljert = True & Actions =*Reindex & Group_by = foreldre

Curl -kommandoen er:

Curl -xget "http: // localhost: 9200/_tasker?Detaljert = True & Actions =*Reindex & Group_by = foreldre "

Det skal gi deg detaljert informasjon om reindekseringsprosessen som vist nedenfor:


"oppgaver":
"FTD_2IXJSXUDN_UA4TZHHG: 51847":
"Node": "ftd_2ixjsxudn_ua4tzhhg",
"ID": 51847,
"Type": "Transport",
"Handling": "Indekser: data/skriv/reindex",
"Status":
"Totalt": 13059,
"Oppdatert": 9000,
"opprettet": 0,
"Slettet": 0,
"Batches": 10,
"versjon_conflicts": 0,
"Noops": 0,
"Forsøk":
"Bulk": 0,
"Søk": 0
,
"Throttled_millis": 0,
"Forespørsler_per_second": -1.0,
"Throttled_until_millis": 0
,
"Beskrivelse": "Reindex fra [source_index] til [destination_index] [_ doc]",
"start_time_in_millis": 1611247308063,
"Running_time_in_nanos": 2094157836,
"Cancellable": True,
"Headers":


Konklusjon

Vi har dekket alt du trenger å vite om å bruke elasticsearch reinindexing API for å kopiere dokumenter fra en indeks (kilde) til en annen (destinasjon). Selv om det er mer med reindekserings -API, skal denne guiden hjelpe deg i gang.