Elastisk søgning

Elasticsearch Reindex Skift felttype

Elasticsearch Reindex Skift felttype

At arbejde med databaser er meget sjovt, men kan undertiden være udfordrende, især når man beskæftiger sig med allerede eksisterende data.

For eksempel, hvis du vil ændre typen af ​​et bestemt felt, kan det kræve, at du tager tjenesten ned, hvilket kan have alvorlige konsekvenser, især i tjenester, der behandler store mængder data.

Heldigvis kan vi bruge Elasticsearchs kraftfulde funktioner som reindexing, indtage noder, rørledninger og processorer til at gøre sådanne opgaver meget lette.

Denne tutorial viser dig, hvordan du ændrer en felttype i et bestemt indeks til et andet ved hjælp af Elasticsearch Ingest-noder. Brug af denne fremgangsmåde eliminerer nedetid, der påvirker tjenester, mens det stadig lykkes at udføre feltopdateringsopgaverne.

Introduktion til Ingest Nodes

Elasticsearch's indtastningsknude giver dig mulighed for at forbehandle dokumenter før deres indeksering.

En Elasticsearch-knude er en bestemt forekomst af Elasticsearch; forbundne noder (mere end en) opretter en enkelt klynge.

Du kan se de tilgængelige noder i den kørende klynge med anmodningen:

GET / _noder /

CURL-kommandoen til dette er:

krølle -XGET “http: // localhost: 9200 / _nodes /”

Udførelse af denne kommando skal give dig massiv information om noderne, som vist nedenfor (trunkeret output):


"_noder":
"total": 3,
"vellykket": 3,
"mislykkedes": 0
,
"cluster_name": "22e0bee6ef91461d82d9b0f1b4b13b4a",
"noder":
"gSlMjTKyTemoOX-EO7Em4w":
"navn": "forekomst-0000000003",
"transport_adresse": "172.28.86.133: 19925 ",
"vært": "172.28.86.133 ",
"ip": "172.28.86.133 ",
"version": "7.10.2 ",
"build_flavor": "standard",
"build_type": "docker",
"build_hash": "747e1cc71def077253878a59143c1f785afa92b9",
"total_indexing_buffer": 214748364,
"roller": [
"data",
"data_cold",
"data_indhold",
"data_hot",
"data_warm",
"indtage",
"mestre",
"remote_cluster_client",
“Transformer”
],
"egenskaber" :
"logical_availability_zone": "zone-0",
"server_name": "instans-0000000003.22e0bee6ef91461d82d9b0f1b4b13b4a ",
"tilgængelighed_zone": "us-west-1c",
"xpack.installeret ":" true ",
"instance_configuration": "aws.data.highio.i3 ",
"transformer.node ":" true ",
"region": "us-west-1"
,
"indstillinger":
"s3":
"klient":
"elastisk-indre-22e0be":
"endpoint": "s3-us-west-1.amazonaws.com "


,
--------------------------------output trunkeret---------------------

Som standard aktiverer alle Elasticsearch-noder indtagelse og er i stand til at håndtere indtagningsoperationer. Ved tunge indtagningsoperationer kan du dog oprette en enkelt node, der kun er dedikeret til indtagelse.

For at håndtere pre_process, inden vi indekserer dokumenterne, skal vi definere en pipeline, der angiver præprocessorserien.

Forprocessorer er sæt instruktioner, der er viklet rundt om en rørledning og udføres en ad gangen.

Følgende er den generelle syntaks for, hvordan man definerer en pipeline:


"beskrivelse": "Konverter mig",
"processorer": [
"konverter":
"felt": "id",
"type": "heltal"
]

Beskrivelsesegenskaben siger, hvad rørledningen skal opnå. Den næste parameter er forprocessorerne, der sendes videre som en liste i rækkefølgen af ​​deres udførelse.

Opret en konverterrørledning

For at oprette en pipeline, som vi bruger til at konvertere en type, skal du bruge PUT-anmodningen med _ingest API-slutpunktet som:

PUT _ingest / pipeline / convert_pipeline

“Beskrivelse”: “konverterer feltet dayOfWeek felt til et langt fra heltal”,
"processorer": [

"konverter":
"felt": "dayOfWeek",
"type": "lang"


]

For cURL skal du bruge kommandoen:

curl -XPUT "http: // localhost: 9200 / _ingest / pipeline / convert_pipeline" -H 'Content-Type: application / json' -d '"description": "konverterer dayOfWeek-feltet til et langt fra heltal", " processorer ": [" convert ": " field ":" dayOfWeek "," type ":" long "] '

Genindeks og konverter Type

Når vi først har pipelinen i indtastningsknudepunktet, er alt, hvad vi skal gøre, at kalde indekserings-API'en og sende pipelinen som et argument til anmodningens organ som:

POST _reindex

“Kilde”:
"index": "kibana_sample_data_flights"
,
"dest":
"index": "kibana_sample_type_diff",
"pipeline": "convert_pipeline"

For CURL:

krølle -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 " '

 Bekræft konvertering

For at kontrollere, at rørledningen er anvendt korrekt, skal du bruge GET-anmodningen til at hente det specifikke felt som:

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

Dette skal returnere dataene som:

-----------------------ORIGINAL INDEX---------------------------

"kibana_sample_data_flights":
"kortlægninger":
"dayOfWeek":
"full_name": "dayOfWeek",
"kortlægning":
"dayOfWeek":
"type": "heltal"






-------------------------REINDEXERET DATA-------------------------------

"kibana_sample_type_diff":
"kortlægninger":
"dayOfWeek":
"full_name": "dayOfWeek",
"kortlægning":
"dayOfWeek":
"type": "lang"





Konklusion

I denne vejledning har vi set på, hvordan man arbejder med Elasticsearch Ingest-noder til forbehandling af dokumenter inden indeksering, hvorved et felt konverteres fra en type til en anden.

Overvej dokumentationen for at lære mere.

https: // www.elastisk.co / guide / da / elasticsearch / reference / master / ingest.html

HD Remastered-spil til Linux, der aldrig tidligere havde haft en Linux-udgivelse
Mange spiludviklere og udgivere kommer med HD-remaster af gamle spil for at forlænge franchisens levetid. Venligst fans, der anmoder om kompatibilitet...
Sådan bruges AutoKey til at automatisere Linux-spil
AutoKey er et desktopautomatiseringsværktøj til Linux og X11, programmeret i Python 3, GTK og Qt. Ved hjælp af dets scripting og MACRO-funktionalitet ...
Sådan vises FPS-tæller i Linux-spil
Linux-spil fik et stort skub, da Valve annoncerede Linux-support til Steam-klient og deres spil i 2012. Siden da har mange AAA- og indiespil fundet ve...