Elastisk søk

Elasticsearch Reindex Endre felttype

Elasticsearch Reindex Endre felttype

Å jobbe med databaser er veldig morsomt, men kan noen ganger være utfordrende, spesielt når du arbeider med allerede eksisterende data.

Hvis du for eksempel vil endre typen av et bestemt felt, kan det kreve at du tar tjenesten ned, noe som kan ha alvorlige konsekvenser, spesielt i tjenester som behandler store datamengder.

Heldigvis kan vi bruke Elasticsearchs kraftige funksjoner som reindexing, innta noder, rørledninger og prosessorer for å gjøre slike oppgaver veldig enkle.

Denne opplæringen viser deg hvordan du endrer en felttype i en bestemt indeks til en annen, ved hjelp av Elasticsearch Ingest-noder. Bruk av denne tilnærmingen vil eliminere nedetid som påvirker tjenester mens du fremdeles klarer å utføre feltoppdateringsoppgavene.

Introduksjon til inntaksnoder

Elasticsearchs inntaksknute lar deg behandle dokumenter før indeksering.

En Elasticsearch-node er en spesifikk forekomst av Elasticsearch; tilkoblede noder (mer enn en) lager en enkelt klynge.

Du kan se nodene som er tilgjengelige i den kjørende klyngen med forespørselen:

GET / _noder /

CURL-kommandoen for dette er:

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

Å utføre denne kommandoen skal gi deg massiv informasjon om nodene, som vist nedenfor (avkortet utgang):


"_noder":
"totalt": 3,
"vellykket": 3,
"mislyktes": 0
,
"cluster_name": "22e0bee6ef91461d82d9b0f1b4b13b4a",
"noder":
"gSlMjTKyTemoOX-EO7Em4w":
"navn": "forekomst-0000000003",
"transport_address": "172.28.86.133: 19925 ",
"vert": "172.28.86.133 ",
"ip": "172.28.86.133 ",
"versjon": "7.10.2 ",
"build_flavor": "standard",
"build_type": "docker",
"build_hash": "747e1cc71def077253878a59143c1f785afa92b9",
"total_indexing_buffer": 214748364,
"roller" : [
"data",
"data_cold",
"data_content",
"data_hot",
"data_warm",
"innta",
"herre",
"remote_cluster_client",
"forvandle"
],
"attributter" :
"logical_availability_zone": "zone-0",
"server_name": "forekomst-0000000003.22e0bee6ef91461d82d9b0f1b4b13b4a ",
"tilgjengelighetssone": "us-west-1c",
"xpack.installert ":" true ",
"instance_configuration": "aws.data.highio.i3 ",
"forvandle.node ":" true ",
"region": "us-west-1"
,
"innstillinger":
"s3":
"klient":
"elastisk-indre-22e0be":
"endpoint": "s3-us-west-1.amazonaws.com "


,
--------------------------------utdata avkortet---------------------

Som standard aktiverer alle Elasticsearch-noder inntak og er i stand til å håndtere inntak. For tunge inntakoperasjoner kan du imidlertid opprette en enkelt node dedikert til inntak.

For å håndtere pre_process, før vi indekserer dokumentene, må vi definere en rørledning som angir preprosessor-serien.

Forprosessorer er sett med instruksjoner pakket rundt en rørledning og utføres en om gangen.

Følgende er den generelle syntaksen for hvordan du definerer en rørledning:


"description": "Konverter meg",
"prosessorer": [
"konvertere":
"felt": "id",
"type": "heltall"
]

Beskrivelsesegenskapen sier hva rørledningen skal oppnå. Den neste parameteren er forprosessorer, overført som en liste i rekkefølgen for utførelsen.

Lag en konverteringsrørledning

For å lage en rørledning som vi vil bruke til å konvertere en type, bruk PUT-forespørselen med _ingest API-endepunktet som:

PUT _ingest / pipeline / convert_pipeline

“Beskrivelse”: “konverterer feltet dayOfWeek-feltet til et langt fra heltall”,
"prosessorer": [

"konvertere":
"field": "dayOfWeek",
"type": "lang"


]

For cURL, bruk kommandoen:

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

Reindex og konverter Type

Når vi har rørledningen i inntaksnoden, er alt vi trenger å ringe indekserings-API og sende rørledningen som et argument til forespørselens kropp som:

POST _reindex

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

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

 Bekreft konvertering

For å bekrefte at rørledningen er brukt riktig, bruk GET-forespørselen for å hente det spesifikke feltet som:

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

Dette skal returnere dataene som:

-----------------------ORIGINAL INDEKS---------------------------

"kibana_sample_data_flights":
"mappings":
"ukedag" :
"full_name": "dayOfWeek",
"kartlegging" :
"ukedag" :
"type": "heltall"






-------------------------OMINDEKSERTE DATA-------------------------------

"kibana_sample_type_diff":
"mappings":
"ukedag" :
"full_name": "dayOfWeek",
"kartlegging" :
"ukedag" :
"type": "lang"





Konklusjon

I denne guiden har vi sett på hvordan vi kan jobbe med Elasticsearch Ingest-noder for å forhåndsbehandle dokumenter før indeksering, og dermed konvertere et felt fra en type til en annen.

Vurder dokumentasjonen for å lære mer.

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

Beste kommandolinjespill for Linux
Kommandolinjen er ikke bare din største allierte når du bruker Linux, den kan også være kilden til underholdning fordi du kan bruke den til å spille m...
Beste Gamepad Mapping Apps for Linux
Hvis du liker å spille spill på Linux med en gamepad i stedet for et vanlig tastatur- og musinngangssystem, er det noen nyttige apper for deg. Mange P...
Nyttige verktøy for Linux-spillere
Hvis du liker å spille spill på Linux, er sjansen stor for at du har brukt apper og verktøy som Wine, Lutris og OBS Studio for å forbedre spilloppleve...