Elastična pretraga

Elasticsearch Reindex promijeni vrstu polja

Elasticsearch Reindex promijeni vrstu polja

Rad s bazama podataka vrlo je zabavan, ali ponekad može biti izazov, pogotovo kada se radi s već postojećim podacima.

Na primjer, ako želite promijeniti vrstu određenog polja, možda će vam trebati da uklonite uslugu, što može imati ozbiljne posljedice, posebno u uslugama koje obrađuju velike količine podataka.

Srećom, možemo koristiti moćne značajke Elasticsearch-a poput Reindexinga, unosa čvorova, cjevovoda i procesora kako bismo takve zadatke učinili vrlo jednostavnima.

Ovaj vodič će vam pokazati kako promijeniti vrstu polja u određenom indeksu u drugu, koristeći čvorove Elasticsearch Ingest. Korištenjem ovog pristupa eliminirat će se zastoji koji utječu na usluge, a istovremeno uspijeva izvršiti zadatke promjene tipa polja.

Uvod u unos čvorova

Ulazni čvor Elasticsearch omogućuje vam obradu dokumenata prije njihovog indeksiranja.

Čvor Elasticsearch specifična je instanca Elasticsearch; povezani čvorovi (više njih) čine jedan klaster.

Uz zahtjev možete pregledati čvorove dostupne u pokrenutom klasteru:

DOBITI / _nodes /

Naredba cURL za ovo je:

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

Izvršavanjem ove naredbe trebali biste dobiti masovne informacije o čvorovima, kao što je prikazano u nastavku (skraćeni izlaz):


"_nodes":
"ukupno": 3,
"uspješno": 3,
"nije uspjelo": 0
,
"ime klastera": "22e0bee6ef91461d82d9b0f1b4b13b4a",
"čvorovi":
"gSlMjTKyTemoOX-EO7Em4w":
"name": "instance-0000000003",
"transport_address": "172.28.86.133: 19925 ",
"domaćin": "172.28.86.133 ",
"ip": "172.28.86.133 ",
"version": "7.10.2 ",
"build_flavor": "zadani",
"build_type": "docker",
"build_hash": "747e1cc71def077253878a59143c1f785afa92b9",
"total_indexing_buffer": 214748364,
"uloge": [
"podaci",
"podaci_hladni",
"sadržaj podataka",
"data_hot",
"data_warm",
"gutati",
"ovladati; majstorski",
"klijent_u udaljenom_klasteru",
"transformirati"
],
"atributi":
"logic_availability_zone": "zona-0",
"ime_poslužitelja": "primjer-0000000003.22e0bee6ef91461d82d9b0f1b4b13b4a ",
"availability_zone": "us-zapad-1c",
"xpack.instalirano ":" true ",
"instance_configuration": "aws.podaci.highio.i3 ",
"transformirati.čvor ":" istina ",
"region": "us-zapad-1"
,
"postavke":
"s3":
"klijent":
"elastična-unutarnja-22e0be":
"krajnja točka": "s3-us-zapad-1.amazonaws.com "


,
--------------------------------izlaz skraćen---------------------

Prema zadanim postavkama, svi Elasticsearch čvorovi omogućuju unos i sposobni su za rukovanje unosnim operacijama. Međutim, za teške operacije unosa možete stvoriti jedan čvor posvećen samo unošenju.

Da bismo obradili pre_process, prije indeksiranja dokumenata, moramo definirati cjevovod koji navodi niz pretprocesora.

Predprocesori su skupovi uputa omotani oko cjevovoda i izvršavaju se jedna po jedna.

Slijedi opća sintaksa kako definirati cjevovod:


"description": "Pretvori me",
"procesori": [
"Pretvoriti" :
"field": "id",
"type": "cijeli broj"
]

Svojstvo opisa govori što bi cjevovod trebao postići. Sljedeći su parametar pretprocesori, koji se prosljeđuju kao popis redoslijedom njihovog izvođenja.

Stvorite pretvoreni cjevovod

Da biste stvorili cjevovod koji ćemo koristiti za pretvorbu tipa, upotrijebite zahtjev PUT s krajnjom točkom _ingest API kao:

PUT _ingest / cjevovod / convert_pipeline

“Description”: “pretvara polje dayOfWeek u long iz cijelog broja”,
"procesori": [

"Pretvoriti" :
"field": "dayOfWeek",
"type": "dugo"


]

Za curL upotrijebite naredbu:

curl -XPUT "http: // localhost: 9200 / _ingest / pipeline / convert_pipeline" -H 'Content-Type: application / json' -d '"description": "pretvara polje dayOfWeek u dugo iz cijelog broja", " procesori ": [" convert ": " field ":" dayOfWeek "," type ":" long "] '

Reindex i Pretvori Tip

Jednom kad imamo cjevovod u unosnom čvoru, sve što trebamo učiniti je nazvati API za indeksiranje i proslijediti cjevovod kao argument u odrednici tijela zahtjeva kao:

OBJAVI _reindex

"Izvor":
"index": "kibana_sample_data_flight"
,
"dest":
"index": "kibana_sample_type_diff",
"pipeline": "convert_pipeline"

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

 Potvrdite pretvorbu

Da biste provjerili je li se cjevovod pravilno primijenio, upotrijebite GET zahtjev za dohvaćanje tog određenog polja kao:

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

To bi trebalo vratiti podatke kao:

-----------------------IZVORNI INDEKS---------------------------

"kibana_sample_data_flights":
"preslikavanja":
"dan u tjednu" :
"full_name": "dayOfWeek",
"mapiranje":
"dan u tjednu" :
"type": "cijeli broj"






-------------------------REINDEKSIRANI PODACI-------------------------------

"kibana_sample_type_diff":
"preslikavanja":
"dan u tjednu" :
"full_name": "dayOfWeek",
"mapiranje":
"dan u tjednu" :
"type": "dugo"





Zaključak

U ovom smo priručniku pogledali kako raditi s čvorovima Elasticsearch Ingest za pre-obradu dokumenata prije indeksiranja, pretvarajući tako polje iz jednog u drugi tip.

Razmotrite dokumentaciju da biste saznali više.

https: // www.elastičan.co / guide / en / elasticsearch / reference / master / ingest.html

Kako instalirati i igrati Doom na Linuxu
Uvod u Doom Serija Doom nastala je 90-ih nakon izlaska originalnog Dooma. To je bio trenutni hit i od tog vremena nadalje igraća serija dobila je broj...
Vulkan za korisnike Linuxa
Sa svakom novom generacijom grafičkih kartica vidimo da programeri igara pomiču granice grafičke vjernosti i dolaze na korak od fotorealizma. No, bez ...
OpenTTD vs Simutrans
Stvaranje vlastite simulacije prijevoza može biti zabavno, opuštajuće i izuzetno primamljivo. Zbog toga morate isprobati što više igara kako biste pro...