Kai modifikuojate duomenis „Elasticsearch“ rodyklėje, tai gali sukelti prastovą, nes funkcija bus baigta ir duomenys bus atnaujinti.
Ši pamoka suteiks jums daug geresnį būdą atnaujinti indeksus nepatiriant prastovų naudojant esamą duomenų šaltinį. Naudodami „Elasticsearch“ pakartotinio indeksavimo API kopijuosime duomenis iš konkretaus šaltinio į kitą.
Pradėkime.
PASTABA: Prieš pradedant, „Reindexing“ operacijos yra daug išteklių, ypač didelių indeksų atveju. Kad sumažintumėte laiką, reikalingą pakartotiniam indeksavimui, išjunkite replikų skaičių, nustatydami vertę į 0 ir įgalinkite jas, kai procesas bus baigtas.
Įgalinti lauką _Source
Reindexing operacijai reikia, kad šaltinio laukas būtų įjungtas visuose šaltinio indekso dokumentuose. Atminkite, kad šaltinio laukas nėra indeksuojamas ir jo negalima ieškoti, tačiau jis naudingas įvairioms užklausoms.
Įgalinkite lauką _Source, pridėdami įrašą, kaip parodyta žemiau:
PUT index_1„Susiejimai“:
"_source":
„įgalinta“: tiesa
Reindex visi dokumentai
Norėdami reindeksuoti dokumentus, turime nurodyti šaltinį ir paskirties vietą. Šaltinis ir paskirties vieta gali būti esamas indeksas, indekso slapyvardis ir duomenų srautai. Galite naudoti vietinio ar nuotolinio sankaupos indeksus.
PASTABA: Kad indeksavimas vyktų sėkmingai, šaltinis ir paskirtis negali būti panašūs. Taip pat turite sukonfigūruoti paskirties vietą, kaip reikalaujama prieš pakartotinį indeksavimą, nes ji netaiko nustatymų iš šaltinio ar bet kurio susijusio šablono.
Bendra Reindexing sintaksė yra tokia:
POST / _reindexPradėkime nuo dviejų indeksų sukūrimo. Pirmasis bus šaltinis, o kitas - tikslas.
PUT / source_index"nustatymai": "replikų skaičius": 0, "dalelių skaičius": 1,
"susiejimai": "_source": "enabled": true, "pseudonimai":
„alias_1“: ,
"alias_2":
"filtras": "terminas":
"Vartotojas.id ":" kibana "
, „routing“: „1“
CURL komanda yra:
garbanos -XPUT "http: // localhost: 9200 / source_index" -H 'Content-Type: application / json' -d '"settings": "rep_licence_s_____0_0_0_0_0_0", "Shell_of_Shell": 1, "susiejimai" : "_source": "enabled": true, "aliases": "alias_1": , "alias_2": "filter": "term": "user.id ":" kibana "," routing ":" 1 " 'Dabar apie paskirties indeksą (galite naudoti pirmiau pateiktą komandą ir pakeisti keletą dalykų arba naudoti toliau pateiktą):
PUT / destination_index"nustatymai": "replikų skaičius": 0, "dalelių skaičius": 1,
"susiejimai": "_source": "enabled": true, "pseudonimai":
"alias_3": ,
"alias_4":
"filtras": "terminas":
"Vartotojas.id ":" kibana "
, „routing“: „1“
Kaip visada, „CURL“ vartotojai gali naudoti komandą:
garbanos -XPUT "http: // localhost: 9200 / destination_index" -H 'Content-Type: application / json' -d '"settings": "Rep_lic_s_____0_0_0_0_0_0", ""____sup___supplication": 0, "_____s__shards ": 1," susiejimai " : "_source": "enabled": true, "aliases": "alias_3": , "alias_4": "filter": "term": "vartotojas.id ":" kibana "," routing ":" 1 " 'Dabar mes turime norimus naudoti indeksus, tada galime pereiti prie dokumentų reeksekso.
Apsvarstykite toliau pateiktą užklausą, kuri nukopijuoja duomenis iš source_index į destination_index:
POST _reindex„Šaltinis“:
"index": "source_index"
,
„dest“:
"index": "paskirties_indeksas"
CURL komanda tai yra:
garbanos -XPOST "http: // localhost: 9200 / _reindex" -H 'Turinio tipas: programa / json' -d '"šaltinis": "rodyklė": ".kibana "," dest ": " index ":" destination_index " 'Vykdydami šią komandą turėtumėte gauti išsamią informaciją apie atliktą operaciją.
PASTABA: Source_index turėtų turėti duomenų.
„paėmė“: 2836,
„timed_out“: klaidingas,
„iš viso“: 13059,
„atnaujinta“: 0,
„sukurta“: 13059,
„ištrinta“: 0,
„partijos“: 14,
"versija_konfliktai": 0,
"ne": 0,
„bando iš naujo“:
„urmas“: 0,
„paieška“: 0
,
"throttled_millis": 0,
„užklausos_per sekundę“: -1.0,
"throttled_until_millis": 0,
„nesėkmės“: []
Reindeksavimo būsenos tikrinimas
„Reindexing“ operacijų būseną galite peržiūrėti paprasčiausiai naudodami „_ taskks“. Pvz., Apsvarstykite toliau pateiktą užklausą:
GET / _užduotys?detalus = tiesa & veiksmai = * reindex & group_by = tėvaiCURL komanda yra:
garbanoti -XGET "http: // localhost: 9200 / _tasks?išsami = tiesa ir veiksmai = * reindex & group_by = tėvai "Tai turėtų suteikti jums išsamią informaciją apie Reindexing procesą, kaip parodyta žemiau:
"užduotys" :
"FTd_2iXjSXudN_Ua4tZhHg: 51847":
„mazgas“: „FTd_2iXjSXudN_Ua4tZhHg“,
„id“: 51847,
„type“: „transportas“,
"action": "indeksai: data / write / reindex",
"status":
„iš viso“: 13059,
„atnaujinta“: 9000,
„sukurta“: 0,
„ištrinta“: 0,
„partijos“: 10,
"versija_konfliktai": 0,
„noops“: 0,
„bando iš naujo“:
„urmas“: 0,
„paieška“: 0
,
"throttled_millis": 0,
„užklausos_per sekundę“: -1.0,
"throttled_until_millis": 0
,
"description": "reindex nuo [source_index] iki [destination_index] [_ doc]",
„start_time_in_millis“: 1611247308063,
„running_time_in_nanos“: 2094157836,
„atšaukiama“: tiesa,
„antraštės“:
Išvada
Apžvelgėme viską, ką reikia žinoti apie „Elasticsearch Reindexing“ API naudojimą norint kopijuoti dokumentus iš vieno indekso (šaltinio) į kitą (paskirties vietą). Nors „Reindexing“ API yra daugiau, šis vadovas turėtų padėti jums pradėti.