Căutare elastică

Elasticsearch Reindex Schimbă tipul câmpului

Elasticsearch Reindex Schimbă tipul câmpului

Lucrul cu baze de date este foarte distractiv, dar uneori poate fi o provocare, mai ales atunci când avem de-a face cu date deja existente.

De exemplu, dacă doriți să modificați tipul unui anumit câmp, s-ar putea să vă solicite să renunțați la serviciu, ceea ce poate avea repercusiuni grave, în special în serviciile care procesează cantități mari de date.

Din fericire, putem folosi funcțiile puternice ale Elasticsearch, cum ar fi reindexarea, ingerarea nodurilor, conductelor și procesoarelor, pentru a facilita astfel de sarcini.

Acest tutorial vă va arăta cum să schimbați un tip de câmp dintr-un anumit index cu altul, utilizând nodurile Elasticsearch Ingest. Utilizarea acestei abordări va elimina timpul de nefuncționare care afectează serviciile, reușind în același timp să efectueze sarcinile de schimbare a tipului de câmp.

Introducere în Ingest Nodes

Nodul de ingestie Elasticsearch vă permite să pre-procesați documente înainte de indexarea lor.

Un nod Elasticsearch este o instanță specifică a Elasticsearch; nodurile conectate (mai multe) formează un singur cluster.

Puteți vizualiza nodurile disponibile în clusterul care rulează cu solicitarea:

GET / _nodes /

Comanda cURL pentru aceasta este:

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

Executarea acestei comenzi ar trebui să vă ofere informații masive despre noduri, așa cum se arată mai jos (ieșire trunchiată):


„_node”:
„total”: 3,
„de succes”: 3,
„eșuat”: 0
,
"cluster_name": "22e0bee6ef91461d82d9b0f1b4b13b4a",
„noduri”:
„gSlMjTKyTemoOX-EO7Em4w”:
"nume": "instanță-0000000003",
"transport_address": "172.28.86.133: 19925 ",
„gazdă”: „172.28.86.133 ",
"ip": "172.28.86.133 ",
"versiune": "7.10.2 ",
"build_flavor": "implicit",
"build_type": "andocator",
"build_hash": "747e1cc71def077253878a59143c1f785afa92b9",
"total_indexing_buffer": 214748364,
„roluri”: [
"date",
„date_cold”,
„date_content”,
„date_hot”,
„data_warm”,
"ingera",
"maestru",
„client_cluster_distant”,
"transforma"
],
„atribute”:
"logic_availability_zone": "zona-0",
"server_name": "instance-0000000003.22e0bee6ef91461d82d9b0f1b4b13b4a ",
"Availability_zone": "noi-vest-1c",
"xpack.instalat ":" adevărat ",
"instance_configuration": "aws.date.highio.i3 ",
"transforma.nod ":" adevărat ",
"regiune": "noi-vest-1"
,
„setări”:
„s3”:
„client”:
"elastic-intern-22e0be":
„punct final”: „s3-us-west-1.amazonaws.com "


,
--------------------------------ieșire trunchiată---------------------

În mod implicit, toate nodurile Elasticsearch activează ingestia și sunt capabile să gestioneze operațiunile de ingestie. Cu toate acestea, pentru operații de ingestie grea, puteți crea un singur nod dedicat numai ingestiei.

Pentru a gestiona pre_procesul, înainte de indexarea documentelor, trebuie să definim o conductă care să precizeze seria preprocesorilor.

Preprocesatoarele sunt seturi de instrucțiuni înfășurate în jurul unei conducte și sunt executate pe rând.

Următoarea este sintaxa generală a modului de definire a unei conducte:


"description": "Convertește-mă",
„procesoare”: [
„converti”:
"câmp": "id",
„tip”: „întreg”
]

Proprietatea de descriere spune ce ar trebui să realizeze conducta. Următorul parametru este preprocesoarele, transmise ca listă în ordinea execuției lor.

Creați o conversie a conductei

Pentru a crea o conductă pe care o vom folosi pentru a converti un tip, utilizați solicitarea PUT cu _ingest API-ul final ca:

PUT _ingest / pipeline / convert_pipeline

„Description”: „convertește câmpul dayOfWeek câmp într-un lung de la întreg”,
„procesoare”: [

„converti”:
"field": "dayOfWeek",
„tip”: „lung”


]

Pentru cURL, utilizați comanda:

curl -XPUT "http: // localhost: 9200 / _ingest / pipeline / convert_pipeline" -H 'Content-Type: application / json' -d '"description": "convertește câmpul dayOfWeek într-un lung de la întreg", " procesoare ": [" convert ": " field ":" dayOfWeek "," type ":" long "] '

Reindexare și convertire Tip

Odată ce avem conducta în nodul de ingestie, tot ce trebuie să facem este să apelăm API-ul de indexare și să trecem conducta ca argument în destinația corpului cererii ca:

POST _reindex

"sursă":
"index": "kibana_sample_data_flights"
,
"dest":
"index": "kibana_sample_type_diff",
"pipeline": "convert_pipeline"

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

 Verificați conversia

Pentru a verifica dacă conducta s-a aplicat corect, utilizați solicitarea GET pentru a prelua acel câmp specific ca:

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

Aceasta ar trebui să returneze datele ca:

-----------------------INDICE ORIGINAL---------------------------

"kibana_sample_data_flights":
„mapări”:
"zi a săptămânii" :
"full_name": "dayOfWeek",
„mapare”:
"zi a săptămânii" :
„tip”: „întreg”






-------------------------DATE REINDEXATE-------------------------------

"kibana_sample_type_diff":
„mapări”:
"zi a săptămânii" :
"full_name": "dayOfWeek",
„mapare”:
"zi a săptămânii" :
„tip”: „lung”





Concluzie

În acest ghid, ne-am uitat la modul de lucru cu nodurile Elasticsearch Ingest pentru pre-procesarea documentelor înainte de indexare, convertind astfel un câmp de la un tip la altul.

Luați în considerare documentația pentru a afla mai multe.

https: // www.elastic.co / guide / ro / elasticsearch / reference / master / ingest.html

How to reverse Mouse and Touchpads scrolling direction in Windows 10
Mouse and Touchpads not only make computing easy but more efficient and less time-consuming. We cannot imagine a life without these devices, but still...
How to change Mouse pointer and cursor size, color & scheme on Windows 10
The mouse pointer and cursor in Windows 10 are very important aspects of the operating system. This can be said for other operating systems as well, s...
Motoare de jocuri gratuite și open source pentru dezvoltarea jocurilor Linux
Acest articol va acoperi o listă de motoare de jocuri gratuite și open source care pot fi utilizate pentru dezvoltarea jocurilor 2D și 3D pe Linux. Ex...