Ha az Elasticsearch indexben módosítja az adatokat, az leálláshoz vezethet, mivel a funkcionalitás befejeződik és az adatok újraindexálódnak.
Ez az oktatóanyag sokkal jobb módszert kínál az indexek frissítésére anélkül, hogy a meglévő adatforrással bármilyen leállást tapasztalna. Az Elasticsearch újraindexelő API segítségével adatokat másolunk egy adott forrásból egy másikba.
Kezdjük.
JEGYZET: Mielőtt belekezdenénk, a Reindexing műveletek erőforrás-igényesek, különösen nagy indexek esetén. A Reindexinghez szükséges idő minimalizálása érdekében tiltsa le a replikák számát úgy, hogy 0-ra állítja az értéket, és engedélyezi azokat a folyamat befejezése után.
Engedélyezze a _Forrás mezőt
A Reindexing művelethez a forrásmező engedélyezése szükséges a forrásindex összes dokumentumán. Vegye figyelembe, hogy a forrásmező nincs indexelve és nem kereshető, de hasznos különféle kérések esetén.
Engedélyezze a _Forrás mezőt egy bejegyzés hozzáadásával az alábbiak szerint:
PUT index_1„Leképezések”:
"_forrás":
"engedélyezve": igaz
Reindex Minden dokumentum
A dokumentumok újraindexeléséhez meg kell adnunk a forrást és a célt. A forrás és a cél lehet meglévő index, index álnév és adatfolyam. Használhatja a helyi vagy egy távoli fürt indexeit.
JEGYZET: Az indexelés sikeres végrehajtásához mind a forrás, mind a cél nem lehet hasonló. A Reindexing előtt szükség szerint konfigurálnia kell a rendeltetési helyet is, mert az nem alkalmazza a forrás vagy bármely társított sablon beállításait.
A Reindexing általános szintaxisa a következő:
POST / _reindexKezdjük két index létrehozásával. Az első lesz a forrás, a másik pedig a cél.
PUT / forrás_index"beállítások": "replikák száma": 0, "szilánkok száma": 1,
"leképezések": "_source": "enabled": true, "álnevek":
"alias_1": ,
"alias_2":
"szűrő": "kifejezés":
"felhasználó.id ":" kibana "
, "routing": "1"
A cURL parancs:
curl -XPUT "http: // localhost: 9200 / source_index" -H "Tartalom-típus: application / json '-d' " beállítások ": " Replikák száma ": 0," Shards_of_shards ": 1," leképezések " : "_source": "enabled": true, "aliases": "alias_1": , "alias_2": "filter": "term": "user.id ":" kibana "," routing ":" 1 " 'Most a célindexről (használhatja a fenti parancsot, és módosíthat néhány dolgot, vagy használhatja az alábbiakat):
PUT / destination_index"beállítások": "replikák száma": 0, "szilánkok száma": 1,
"leképezések": "_source": "enabled": true, "álnevek":
"alias_3": ,
"alias_4":
"szűrő": "kifejezés":
"felhasználó.id ":" kibana "
, "routing": "1"
Mint mindig, a cURL felhasználók is használhatják a következő parancsot:
curl -XPUT "http: // localhost: 9200 / destination_index" -H 'Tartalomtípus: application / json' -d '"beállítások": "Replikák száma": 0, "Szilánkok száma: 1", "leképezések" : "_source": "enabled": true, "aliases": "alias_3": , "alias_4": "filter": "term": "felhasználó.id ":" kibana "," routing ":" 1 " 'Megvannak az általunk használni kívánt indexek, majd továbbléphetünk a dokumentumok újraszövegezésére.
Vegye figyelembe az alábbi kérést, amely az adatokat a source_index és a destination_index között másolja:
POST _reindex"forrás":
"index": "forrás_index"
,
"dest":
"index": "cél_index"
A cURL parancs erre:
curl -XPOST "http: // localhost: 9200 / _reindex" -H 'Tartalomtípus: application / json' -d '"forrás": "index": ".kibana "," dest ": " index ":" destination_index " 'A parancs végrehajtása részletes információkat nyújt az elvégzett műveletről.
JEGYZET: A forrás_indexnek tartalmaznia kell adatokat.
"vette": 2836,
"timed_out": hamis,
"összesen": 13059,
"frissítve": 0,
"létrehozva": 13059,
"törölt": 0,
"tételek": 14,
"verzió_konfliktusok": 0,
"noops": 0,
"újrapróbálkozik":
"tömeges": 0,
"keresés": 0
,
"throttled_millis": 0,
"request_per_second": -1.0,
"throttled_until_millis": 0,
"kudarcok": []
Reindexing állapotának ellenőrzése
A Reindexing műveletek állapotát a _feladatok használatával tekintheti meg. Vegye figyelembe például az alábbi kérést:
GET / _feladatok?részletes = true & actions = * reindex & group_by = szülőkA cURL parancs:
curl -XGET "http: // localhost: 9200 / _feladatok?részletes = true & actions = * reindex & group_by = szülők "Ennek részletes információkat kell adnia az Reindexing folyamatról az alábbiak szerint:
"feladatok":
"FTd_2iXjSXudN_Ua4tZhHg: 51847":
"csomópont": "FTd_2iXjSXudN_Ua4tZhHg",
"id": 51847,
"type": "transport",
"action": "indexek: data / write / reindex",
"status":
"összesen": 13059,
"frissítve": 9000,
"létrehozva": 0,
"törölt": 0,
"tételek": 10,
"verzió_konfliktusok": 0,
"noops": 0,
"újrapróbálkozik":
"tömeges": 0,
"keresés": 0
,
"throttled_millis": 0,
"request_per_second": -1.0,
"throttled_until_millis": 0
,
"description": "reindex a [forrás_index] és a [cél_index] [_ doc] között",
"start_time_in_millis": 1611247308063,
"running_time_in_nanos": 2094157836,
"törölhető": igaz,
"fejlécek":
Következtetés
Áttekintettünk mindent, amit tudnia kell az Elasticsearch Reindexing API használatáról a dokumentumok egyik indexből (forrásból) a másikba (cél) másolásához. Bár a Reindexing API-n még több van, ez az útmutató segít az indulásban.