Elastické vyhledávání

Změnit typ pole Elasticsearch Reindex

Změnit typ pole Elasticsearch Reindex

Práce s databázemi je velmi zábavná, ale někdy může být náročná, zejména při práci s již existujícími daty.

Například pokud chcete změnit typ konkrétního pole, může to vyžadovat, abyste službu sundali, což může mít vážné následky, zejména ve službách, které zpracovávají velké množství dat.

Naštěstí můžeme použít výkonné funkce Elasticsearch, jako je Reindexing, přijímání uzlů, potrubí a procesorů, aby tyto úkoly byly velmi snadné.

Tento kurz vám ukáže, jak změnit typ pole v konkrétním indexu na jiný pomocí uzlů Elasticsearch Ingest. Použití tohoto přístupu eliminuje prostoje, které ovlivňují služby, a přitom se stále řídí provádění úkolů změny typu pole.

Úvod do uzlů příjmu

Uzel příjmu Elasticsearch umožňuje předběžné zpracování dokumentů před jejich indexováním.

Uzel Elasticsearch je specifická instance Elasticsearch; připojené uzly (více než jeden) tvoří jeden klastr.

Můžete zobrazit uzly dostupné v běžícím klastru s požadavkem:

ZÍSKAT / _uzly /

Příkaz cURL je následující:

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

Provedení tohoto příkazu by vám mělo poskytnout rozsáhlé informace o uzlech, jak je znázorněno níže (zkrácený výstup):


"_nodes":
"celkem": 3,
„successful“: 3,
"failed": 0
,
"cluster_name": "22e0bee6ef91461d82d9b0f1b4b13b4a",
"nodes":
"gSlMjTKyTemoOX-EO7Em4w":
"name": "instance-0000000003",
"transport_address": "172.28.86.133: 19925 ",
"host": "172.28.86.133 ",
"ip": "172.28.86.133 ",
"version": "7.10.2 ",
"build_flavor": "výchozí",
"build_type": "ukotvitelný panel",
"build_hash": "747e1cc71def077253878a59143c1f785afa92b9",
"total_indexing_buffer": 214748364,
"role": [
"data",
„data_cold“,
"data_content",
"data_hot",
„data_warm“,
"pohltit",
"mistr",
"remote_cluster_client",
"přeměnit"
],
"atributy" :
"logical_availability_zone": "zone-0",
"server_name": "instance-0000000003.22e0bee6ef91461d82d9b0f1b4b13b4a ",
"availability_zone": "us-west-1c",
"xpack.".nainstalován ":" true ",
"instance_configuration": "aws.data.highio.i3 ",
"přeměnit.node ":" true ",
"region": "us-west-1"
,
"settings":
"s3":
"client":
"elastic-internal-22e0be":
"endpoint": "s3-us-west-1.amazonky.com "


,
--------------------------------výstup zkrácen---------------------

Ve výchozím nastavení všechny uzly Elasticsearch umožňují přijímání a jsou schopné zpracovávat přijímací operace. Pro těžké operace s příjmem však můžete vytvořit jeden uzel vyhrazený pouze pro příjem.

Abychom zvládli pre_process, musíme před indexováním dokumentů definovat kanál, který uvádí řadu preprocesorů.

Preprocesory jsou sady instrukcí zabalených kolem kanálu a jsou prováděny jeden po druhém.

Následuje obecná syntaxe toho, jak definovat kanál:


"description": "Převést mě",
"procesory": [
"konvertovat" :
"field": "id",
"type": "integer"
]

Vlastnost description říká, čeho by měl kanál dosáhnout. Dalším parametrem jsou preprocesory předávané jako seznam v pořadí jejich provedení.

Vytvořte Convert Pipeline

Chcete-li vytvořit kanál, který použijeme k převodu typu, použijte požadavek PUT s koncovým bodem API _ingest jako:

PUT _ingest / pipeline / convert_pipeline

„Description“: „převede pole dayOfWeek na dlouhé celé číslo“,
"procesory": [

"konvertovat" :
"field": "dayOfWeek",
"type": "long"


]

Pro cURL použijte příkaz:

curl -XPUT "http: // localhost: 9200 / _ingest / pipeline / convert_pipeline" -H 'Content-Type: application / json' -d '"description": "převede pole dayOfWeek na dlouhý z celého čísla", " processors ": [" convert ": " field ":" dayOfWeek "," type ":" long "] ''

Reindex a převod Typ

Jakmile máme kanál v uzlu příjmu, vše, co musíme udělat, je zavolat indexovací API a předat kanál jako argument v cíli těla žádosti jako:

POST _reindex

„Source“:
"index": "kibana_sample_data_flights"
,
"dest":
"index": "kibana_sample_type_diff",
"pipeline": "convert_pipeline"

Pro 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 " '

 Ověření převodu

Chcete-li ověřit, že se kanál správně použil, použijte požadavek GET k načtení konkrétního pole jako:

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

To by mělo vrátit data jako:

-----------------------ORIGINÁLNÍ INDEX---------------------------

"kibana_sample_data_flights":
"mapování":
"den v týdnu" :
"full_name": "dayOfWeek",
"mapování":
"den v týdnu" :
"type": "integer"






-------------------------REINDEXOVANÁ DATA-------------------------------

"kibana_sample_type_diff":
"mapování":
"den v týdnu" :
"full_name": "dayOfWeek",
"mapování":
"den v týdnu" :
"type": "long"





Závěr

V této příručce jsme se podívali na to, jak pracovat s uzly Elasticsearch Ingest k předběžnému zpracování dokumentů před indexováním, a tak převádět pole z jednoho typu na jiný.

Další informace najdete v dokumentaci.

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

Hry Jak zobrazit počítadlo FPS v linuxových hrách
Jak zobrazit počítadlo FPS v linuxových hrách
Hraní na Linuxu získalo velký tlak, když společnost Valve v roce 2012 oznámila podporu systému Linux pro klienta Steam a jejich hry. Od té doby se mno...
Hry Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Úvod do hry Civilization 6 je moderní pojetí klasického konceptu představeného v sérii her Age of Empires. Myšlenka byla docela jednoduchá; začali bys...
Hry Jak nainstalovat a hrát Doom na Linuxu
Jak nainstalovat a hrát Doom na Linuxu
Úvod do Doom Série Doom vznikla v 90. letech po vydání původního Doomu. Byl to okamžitý hit a od té doby herní série získala řadu ocenění a původní Do...