Keď upravujete údaje v indexe Elasticsearch, môže to viesť k výpadkom, pretože funkcia sa dokončí a údaje sa znova indexujú.
Tento výukový program vám poskytne oveľa lepší spôsob aktualizácie indexov bez toho, aby ste s existujúcim zdrojom údajov zaznamenali akékoľvek výpadky. Pomocou rozhrania API na opätovné indexovanie Elasticsearch skopírujeme údaje z konkrétneho zdroja do druhého.
Začnime.
POZNÁMKA: Než začneme, operácie indexovania sú náročné na zdroje, najmä na veľkých indexoch. Aby ste minimalizovali čas potrebný na opätovnú indexáciu, vypnite počet_počet_replík nastavením hodnoty na 0 a povoľte ich po dokončení procesu.
Povoliť pole _Source
Operácia opätovného indexovania vyžaduje povolenie zdrojového poľa vo všetkých dokumentoch v zdrojovom indexe. Upozorňujeme, že zdrojové pole nie je indexované a nemožno ho prehľadať, ale je užitočné pri rôznych požiadavkách.
Pole _Source povoľte pridaním položky, ako je uvedené nižšie:
PUT index_1„Mapping“:
"_source":
„enabled“: pravda
Znova indexovať všetky dokumenty
Na opätovnú indexáciu dokumentov musíme určiť zdroj a cieľ. Zdrojom a cieľom môže byť existujúci index, alias indexu a dátové toky. Môžete použiť indexy z lokálneho alebo vzdialeného klastra.
POZNÁMKA: Aby indexovanie prebehlo úspešne, zdroj ani cieľ nemôžu byť podobné. Cieľ musíte tiež nakonfigurovať podľa potreby pred opätovnou indexáciou, pretože neaplikuje nastavenia zo zdroja alebo z akejkoľvek priradenej šablóny.
Všeobecná syntax pre opätovnú indexáciu je nasledovná:
POST / _reindexZačnime vytvorením dvoch indexov. Prvý bude zdroj a druhý cieľ.
PUT / source_index"settings": "number_of_replicas": 0, "number_of_shards": 1,
"mappings": "_source": "enabled": true, "aliasy":
"alias_1": ,
"alias_2":
"filter": "term":
"užívateľ.id ":" kibana "
, "smerovanie": "1"
Príkaz cURL je:
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, "aliasy": "alias_1": , "alias_2": "filter": "term": "používateľ.id ":" kibana "," routing ":" 1 " 'Teraz pre cieľový index (môžete použiť vyššie uvedený príkaz a zmeniť niekoľko vecí alebo použiť ten, ktorý je uvedený nižšie):
PUT / destination_index"settings": "number_of_replicas": 0, "number_of_shards": 1,
"mappings": "_source": "enabled": true, "aliasy":
"alias_3": ,
"alias_4":
"filter": "term":
"užívateľ.id ":" kibana "
, "smerovanie": "1"
Používatelia cURL môžu ako vždy použiť príkaz:
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, "aliasy": "alias_3": , "alias_4": "filter": "term": "používateľ.id ":" kibana "," routing ":" 1 " 'Teraz máme indexy, ktoré chceme použiť, a potom môžeme prejsť na opätovnú indexáciu dokumentov.
Zvážte nižšie uvedenú žiadosť, ktorá kopíruje údaje zo zdrojového_indexu do cieľového_indexu:
POST _reindex„Zdroj“:
"index": "source_index"
,
"cieľ":
"index": "destination_index"
Príkaz cURL je tento:
curl -XPOST "http: // localhost: 9200 / _reindex" -H 'Content-Type: application / json' -d '"source": "index": ".kibana "," dest ": " index ":" destination_index " 'Vykonanie tohto príkazu by vám malo poskytnúť podrobné informácie o vykonanej operácii.
POZNÁMKA: Zdrojový_index by mal mať údaje.
„vzal“: 2836,
"timed_out": false,
"celkom": 13059,
"aktualizované": 0,
"vytvorené": 13059,
"odstránené": 0,
"dávky": 14,
"version_conflicts": 0,
"noops": 0,
"retries":
"hromadné": 0,
"hľadanie": 0
,
"throttled_millis": 0,
"requests_per_second": -1.0,
"throttled_until_millis": 0,
"nepodarky": []
Kontrola stavu opätovnej indexácie
Stav operácií opätovného indexovania môžete zobraziť jednoducho pomocou úlohy _tasks. Zvážte napríklad žiadosť uvedenú nižšie:
ZÍSKAŤ / _úlohy?podrobne = pravda & akcie = * reindex & skupina_by = rodičiaPríkaz cURL je:
curl -XGET "http: // localhost: 9200 / _tasks?podrobne = pravda & akcie = * reindex & skupina_by = rodičia "Mali by ste získať podrobné informácie o procese opätovnej indexácie, ako je uvedené nižšie:
"tasks":
"FTd_2iXjSXudN_Ua4tZhHg: 51847":
"node": "FTd_2iXjSXudN_Ua4tZhHg",
„id“: 51847,
"type": "transport",
"action": "indexy: data / write / reindex",
"postavenie" :
"celkom": 13059,
"aktualizované": 9000,
"vytvorené": 0,
"odstránené": 0,
"dávky": 10,
"version_conflicts": 0,
"noops": 0,
"retries":
"hromadné": 0,
"hľadanie": 0
,
"throttled_millis": 0,
"requests_per_second": -1.0,
"throttled_until_millis": 0
,
"description": "reindex z [source_index] na [destination_index] [_ doc]",
"start_time_in_millis": 1611247308063,
"running_time_in_nanos": 2094157836,
„zrušiteľné“: pravda,
"headers":
Záver
Poskytli sme všetko, čo potrebujete vedieť o používaní rozhrania Elasticsearch Reindexing API na kopírovanie dokumentov z jedného indexu (zdroj) do druhého (cieľ). Aj keď v rozhraní Reindexing API existuje viac, táto príručka by vám mala pomôcť začať.