Elastické vyhľadávanie

Typ poľa Elasticsearch Reindex

Typ poľa Elasticsearch Reindex

Práca s databázami je veľmi zábavná, ale niekedy môže byť náročná, najmä pri práci s už existujúcimi údajmi.

Napríklad ak chcete zmeniť typ konkrétneho poľa, môže to vyžadovať odstránenie služby, čo môže mať vážne následky, najmä v službách, ktoré spracúvajú veľké množstvo dát.

Našťastie môžeme použiť výkonné funkcie Elasticsearch, ako je Reindexing, prijímanie uzlov, potrubí a procesorov, aby sme tieto úlohy veľmi uľahčili.

Tento tutoriál vám ukáže, ako zmeniť typ poľa v konkrétnom indexe na iný pomocou uzlov Elasticsearch Ingest. Použitím tohto prístupu sa eliminujú prestoje, ktoré ovplyvňujú služby, a pritom sa stále darí vykonávať úlohy týkajúce sa zmeny typu poľa.

Úvod do uzlov Ingest

Uzol príjmu Elasticsearch umožňuje predbežné spracovanie dokumentov pred ich indexáciou.

Uzol Elasticsearch je špecifická inštancia Elasticsearch; spojené uzly (viac ako jeden) tvoria jeden klaster.

Uzly dostupné v bežiacom klastri môžete zobraziť s požiadavkou:

ZÍSKAŤ / _uzly /

Príkaz cURL je tento:

curl -XGET “http: // localhost: 9200 / _nodes /”

Vykonanie tohto príkazu by vám malo poskytnúť rozsiahle informácie o uzloch, ako je uvedené nižšie (skrátený výstup):


"_nodes":
"celkom": 3,
„úspešné“: 3,
"failed": 0
,
"cluster_name": "22e0bee6ef91461d82d9b0f1b4b13b4a",
"uzly":
"gSlMjTKyTemoOX-EO7Em4w":
"name": "instance-0000000003",
"transport_address": "172.28.86.133: 19925 ",
"host": "172.28.86.133 ",
"ip": "172.28.86.133 ",
"verzia": "7.10.2 ",
"build_flavor": "predvolené",
"build_type": "ukotviteľný panel",
"build_hash": "747e1cc71def077253878a59143c1f785afa92b9",
"total_indexing_buffer": 214748364,
"role": [
„dáta“,
„data_cold“,
„data_content“,
„data_hot“,
„data_warm“,
„prehltnúť“,
„pán“,
„remote_cluster_client“,
„Transformovať“
],
"attributes":
"logical_availability_zone": "zone-0",
"server_name": "inštancia-0000000003.22e0bee6ef91461d82d9b0f1b4b13b4a ",
"availability_zone": "us-west-1c",
„xpack.nainštalované ":" true ",
"instance_configuration": "aws.údaje.highio.i3 ",
„transformovať.node ":" true ",
"region": "us-west-1"
,
"nastavenie" :
"s3":
"zákazník" :
"elastic-internal-22e0be":
"endpoint": "s3-us-west-1.amazonaws.com "


,
--------------------------------výstup skrátený---------------------

V predvolenom nastavení umožňujú všetky uzly Elasticsearch príjem a sú schopné zvládnuť operácie príjmu. Pre ťažké operácie prijímania však môžete vytvoriť jeden uzol určený iba na prijímanie.

Aby sme zvládli pre_proces, pred indexovaním dokumentov musíme definovať kanál, ktorý uvádza sériu preprocesorov.

Predbežné procesory sú sady pokynov zabalených okolo kanálu a sú vykonávané po jednom.

Toto je všeobecná syntax ako definovať kanál:


"description": "Konvertovať ma",
„procesory“: [
"konvertovať":
"field": "id",
"type": "integer"
]

Vlastnosť description hovorí, čo by malo plynovod dosiahnuť. Ďalším parametrom sú preprocesory, ktoré sa odovzdávajú ako zoznam v poradí podľa ich vykonania.

Vytvorte konverzný kanál

Ak chcete vytvoriť kanál, ktorý použijeme na prevod typu, použite požiadavku PUT s koncovým bodom API _ingest ako:

PUT _ingest / pipeline / convert_pipeline

“Description”: “prevádza pole dayOfWeek na dlhé celé číslo”,
„procesory“: [

"konvertovať":
"field": "dayOfWeek",
"type": "long"


]

Pre cURL použite príkaz:

curl -XPUT "http: // localhost: 9200 / _ingest / pipeline / convert_pipeline" -H 'Content-Type: application / json' -d '"description": "prevádza pole dayOfWeek na dlhé celé číslo", " processors ": [" convert ": " field ":" dayOfWeek "," type ":" long "] ''

Reindex a konverzia Typ

Akonáhle máme kanál v uzle ingest, stačí zavolať indexovacie API a odovzdať kanál ako argument v cieľovom tele žiadosti ako:

POST _reindex

„Zdroj“:
"index": "kibana_sample_data_flights"
,
"cieľ":
"index": "kibana_sample_type_diff",
"pipeline": "convert_pipeline"

Pre curl:

curl -XPOST "http: // localhost: 9200 / _reindex" -H 'Content-Type: application / json' -d '"source": "index": "kibana_sample_data_flights", "dest": "index ":" kibana_sample_type_diff "," pipeline ":" convert_pipeline " '

 Overte prevod

Ak chcete overiť, či sa kanál správne použil, použite požiadavku GET na načítanie konkrétneho poľa ako:

GET / kibana_sample_data_flights / _mapping / field / dayOfWeek
GET / kibana_sample_type_diff / _mapping / field / dayOfWeek

Toto by malo vrátiť údaje ako:

-----------------------ORIGINÁLNY INDEX---------------------------

"kibana_sample_data_flights":
"mapping":
"deň v týždni" :
"full_name": "dayOfWeek",
"mapovanie":
"deň v týždni" :
"type": "integer"






-------------------------REINDEXOVANÉ ÚDAJE-------------------------------

"kibana_sample_type_diff":
"mapping":
"deň v týždni" :
"full_name": "dayOfWeek",
"mapovanie":
"deň v týždni" :
"type": "long"





Záver

V tejto príručke sme sa pozreli na to, ako pracovať s uzlami Elasticsearch Ingest na predbežné spracovanie dokumentov pred indexovaním, čím sa prevedie pole z jedného typu na druhý.

Ak sa chcete dozvedieť viac, prečítajte si dokumentáciu.

https: // www.elastické.co / guide / en / elasticsearch / reference / master / ingest.html

Hry Open source porty komerčných herných strojov
Open source porty komerčných herných strojov
Na hranie starých i niektorých z nedávnych herných titulov je možné využiť bezplatné hry s otvoreným zdrojom a multiplatformové herné enginy. V tomto ...
Hry Najlepšie hry z príkazového riadku pre systém Linux
Najlepšie hry z príkazového riadku pre systém Linux
Príkazový riadok nie je pri použití systému Linux iba vaším najväčším spojencom - môže byť tiež zdrojom zábavy, pretože ho môžete použiť na hranie mno...
Hry Najlepšie aplikácie na mapovanie gamepadu pre Linux
Najlepšie aplikácie na mapovanie gamepadu pre Linux
Ak radi hráte hry v systéme Linux s gamepadom namiesto typického systému vstupu pre klávesnicu a myš, máte tu niekoľko užitočných aplikácií. Mnoho hie...