Ko spreminjate podatke v indeksu Elasticsearch, lahko pride do izpada, ko se funkcionalnost dokonča in podatki znova indeksirajo.
Ta vadnica vam bo dala veliko boljši način posodabljanja indeksov, ne da bi pri tem obstajali izpadi z obstoječim virom podatkov. Z API-jem za ponovno indeksiranje Elasticsearch bomo podatke iz določenega vira kopirali v drugega.
Začnimo.
OPOMBA: Preden začnemo, so operacije ponovnega indeksiranja zelo zahtevne, zlasti pri velikih indeksih. Če želite minimizirati čas, potreben za ponovno indeksiranje, onemogočite number_of_replicas tako, da nastavite vrednost na 0 in jih omogočite, ko je postopek končan.
Omogoči polje _Source
Operacija ponovnega indeksiranja zahteva, da je v vseh dokumentih v izvornem indeksu omogočeno izvorno polje. Upoštevajte, da izvorno polje ni indeksirano in ga ni mogoče iskati, je pa uporabno za različne zahteve.
Omogočite polje _Source, tako da dodate vnos, kot je prikazano spodaj:
PUT indeks_1"Preslikave":
"_source":
"omogočeno": true
Ponovno indeksiraj vse dokumente
Za ponovno indeksiranje dokumentov moramo določiti vir in cilj. Vir in cilj sta lahko obstoječi indeks, vzdevek indeksa in tokovi podatkov. Uporabite lahko indekse iz lokalne ali oddaljene gruče.
OPOMBA: Za uspešno izvedbo indeksiranja si izvor in cilj ne moreta biti podobna. Pred ponovnim indeksiranjem morate tudi ciljno konfigurirati, ker ne uporablja nastavitev iz vira ali katere koli povezane predloge.
Splošna sintaksa za ponovno indeksiranje je:
POST / _reindexZačnimo z ustvarjanjem dveh indeksov. Prvi bo vir, drugi pa cilj.
PUT / vir_index"settings": "number_of_replicas": 0, "number_of_shards": 1,
"preslikave": "_source": "omogočeno": resnično, "vzdevki":
"alias_1": ,
"alias_2":
"filter": "izraz":
"uporabnik.id ":" kibana "
, "usmerjanje": "1"
Ukaz cURL je:
curl -XPUT "http: // localhost: 9200 / source_index" -H 'Content-Type: application / json' -d '"settings": "number_of_replicas": 0, "number_of_shards": 1, "preslikave" : "_source": "enabled": true, "alias": "alias_1": , "alias_2": "filter": "term": "uporabnik.id ":" kibana "," usmerjanje ":" 1 " 'Zdaj za ciljni indeks (lahko uporabite zgornji ukaz in spremenite nekaj stvari ali uporabite spodnjega):
PUT / ciljni_indeks"settings": "number_of_replicas": 0, "number_of_shards": 1,
"preslikave": "_source": "omogočeno": resnično, "vzdevki":
"alias_3": ,
"alias_4":
"filter": "izraz":
"uporabnik.id ":" kibana "
, "usmerjanje": "1"
Kot vedno lahko tudi uporabniki cURL uporabljajo ukaz:
curl -XPUT "http: // localhost: 9200 / destination_index" -H 'Content-Type: application / json' -d '"settings": "number_of_replicas": 0, "number_of_shards": 1, "preslikave" : "_source": "enabled": true, "alias": "alias_3": , "alias_4": "filter": "term": "uporabnik.id ":" kibana "," usmerjanje ":" 1 " 'Zdaj imamo indekse, ki jih želimo uporabiti, nato pa lahko nadaljujemo s ponovnim indeksiranjem dokumentov.
Upoštevajte spodnjo zahtevo, ki kopira podatke iz source_index v destination_index:
OBJAVI _reindex“Vir”:
"index": "source_index"
,
"dest":
"index": "destination_index"
Ukaz cURL za to je:
curl -XPOST "http: // localhost: 9200 / _reindex" -H 'Content-Type: application / json' -d '"source": "index": ".kibana "," dest ": " index ":" destination_index " 'Z izvajanjem tega ukaza boste dobili podrobne informacije o izvedeni operaciji.
OPOMBA: Vir_index mora imeti podatke.
"vzel": 2836,
"timed_out": false,
"skupaj": 13059,
"posodobljeno": 0,
"ustvarjeno": 13059,
"izbrisano": 0,
"serije": 14,
"version_conflicts": 0,
"noops": 0,
"ponovni poskusi":
"v razsutem stanju": 0,
"iskanje": 0
,
"throttled_millis": 0,
"request_per_second": -1.0,
"throttled_until_millis": 0,
"napake": []
Preverjanje stanja ponovnega indeksiranja
Stanje operacij ponovnega indeksiranja si lahko ogledate s preprosto uporabo _tasks. Na primer, upoštevajte spodnjo zahtevo:
GET / _opravila?podrobno = res & dejanja = * reindex & group_by = staršiUkaz cURL je:
curl -XGET "http: // localhost: 9200 / _tasks?podrobno = res & dejanja = * reindex & group_by = starši "Tako boste dobili podrobne informacije o postopku ponovnega indeksiranja, kot je prikazano spodaj:
"naloge" :
"FTd_2iXjSXudN_Ua4tZhHg: 51847":
"vozlišče": "FTd_2iXjSXudN_Ua4tZhHg",
"id": 51847,
"type": "transport",
"action": "indeksi: data / write / reindex",
"stanje" :
"skupaj": 13059,
"posodobljeno": 9000,
"ustvarjeno": 0,
"izbrisano": 0,
"serije": 10,
"version_conflicts": 0,
"noops": 0,
"ponovni poskusi":
"v razsutem stanju": 0,
"iskanje": 0
,
"throttled_millis": 0,
"request_per_second": -1.0,
"throttled_until_millis": 0
,
"description": "reindex from [source_index] to [destination_index] [_ doc]",
"start_time_in_millis": 1611247308063,
"run_time_in_nanos": 2094157836,
"Cancellable": res,
"glave":
Zaključek
Pokrili smo vse, kar morate vedeti o uporabi API-ja za ponovno indeksiranje Elasticsearch za kopiranje dokumentov iz enega indeksa (vir) v drugega (cilj). Čeprav je API za ponovno indeksiranje še več, vam bo ta vodnik pomagal začeti.