Delo z bazami podatkov je zelo zabavno, včasih pa je lahko zahtevno, zlasti pri obravnavi že obstoječih podatkov.
Če želite na primer spremeniti vrsto določenega polja, boste morda morali odstraniti storitev, kar ima lahko resne posledice, zlasti pri storitvah, ki obdelujejo velike količine podatkov.
Na srečo lahko za olajšanje takšnih nalog uporabimo zmogljive funkcije Elasticsearch-a, kot so ponovno indeksiranje, vnos vozlišč, cevovodi in procesorji.
Ta vadnica vam bo pokazala, kako z uporabo vozlišč Elasticsearch Ingest spremenite vrsto polja v določenem indeksu. S tem pristopom bomo odpravili izpad, ki vpliva na storitve, hkrati pa še vedno lahko opravil naloge spremembe vrste polja.
Uvod v vnos vozlišč
Prevzemno vozlišče Elasticsearch vam omogoča predhodno obdelavo dokumentov pred njihovim indeksiranjem.
Vozlišče Elasticsearch je poseben primerek Elasticsearch; povezana vozlišča (več kot eno) tvorijo eno skupino.
Z zahtevo si lahko ogledate vozlišča, ki so na voljo v delujoči gruči:
GET / _nodes /Ukaz cURL za to je:
curl -XGET “http: // localhost: 9200 / _nodes /”Z izvajanjem tega ukaza boste dobili ogromne informacije o vozliščih, kot je prikazano spodaj (okrnjeni izhod):
"_nodes":
"skupaj": 3,
"uspešno": 3,
"neuspešno": 0
,
"ime grozda": "22e0bee6ef91461d82d9b0f1b4b13b4a",
"vozlišča":
"gSlMjTKyTemoOX-EO7Em4w":
"name": "primer-0000000003",
"transport_address": "172.28.86.133: 19925 ",
"gostitelj": "172.28.86.133 ",
"ip": "172.28.86.133 ",
"version": "7.10.2 ",
"build_flavor": "privzeto",
"build_type": "docker",
"build_hash": "747e1cc71def077253878a59143c1f785afa92b9",
"total_indexing_buffer": 214748364,
"vloge": [
"podatki",
"data_cold",
"data_content",
"data_hot",
"data_warm",
"zaužiti",
"mojster",
"remote_cluster_client",
"Preoblikovanje"
],
"lastnosti" :
"logic_availability_zone": "cona-0",
"ime_strežnika": "primerek-0000000003.22e0bee6ef91461d82d9b0f1b4b13b4a ",
"availability_zone": "us-zahod-1c",
"xpack.nameščen ":" true ",
"instance_configuration": "aws.podatkov.highio.i3 ",
"preoblikovanje.vozlišče ":" resnično ",
"region": "us-zahod-1"
,
"nastavitve":
"s3":
"stranka":
"elastična-notranja-22e0be":
"endpoint": "s3-us-zahod-1.amazonaws.com "
,
--------------------------------izsek skrajšan---------------------
Vsa vozlišča Elasticsearch privzeto omogočajo prevzem in so sposobni obdelati operacije vnosa. Vendar lahko za težke operacije zaužitja ustvarite eno vozlišče, namenjeno samo zaužitju.
Za obdelavo pre_process moramo pred indeksiranjem dokumentov definirati cevovod, ki navaja vrsto predprocesorjev.
Predprocesorji so sklopi navodil, ovitih okoli cevovoda, in se izvajajo posamezno.
Sledi splošna sintaksa, kako definirati cevovod:
"description": "Pretvori me",
"procesorji": [
"Pretvorba" :
"field": "id",
"type": "celo število"
]
Lastnost opisa pove, kaj mora doseči cevovod. Naslednji parameter so predprocesorji, ki se po vrstnem redu izvajanja posredujejo kot seznam.
Ustvarite pretvorni cevovod
Če želite ustvariti cevovod, ki ga bomo uporabili za pretvorbo vrste, uporabite zahtevo PUT s končno točko API _ingest kot:
PUT _ingest / cevovod / convert_pipeline“Description”: “pretvori polje dayOfWeek v dolgo iz celega števila”,
"procesorji": [
"Pretvorba" :
"field": "dayOfWeek",
"type": "long"
]
Za curl uporabite ukaz:
curl -XPUT "http: // localhost: 9200 / _ingest / pipeline / convert_pipeline" -H 'Content-Type: application / json' -d '"description": "pretvori polje dayOfWeek v dolgo iz celega števila", " procesorji ": [" convert ": " field ":" dayOfWeek "," type ":" long "] 'Ponovno indeksiranje in pretvorba Tip
Ko imamo v prevzemnem vozlišču cevovod, je vse, kar moramo storiti, poklicati indeksni API in posredovati cevovod kot argument v cilju telesa zahteve kot:
OBJAVI _reindex“Vir”:
"index": "kibana_sample_data_flights"
,
"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 " 'Preverite pretvorbo
Če želite preveriti, ali se je cevovod pravilno uporabil, uporabite zahtevo GET, da pridobite to določeno polje kot:
GET / kibana_sample_data_flights / _mapping / field / dayOfWeekGET / kibana_sample_type_diff / _mapping / field / dayOfWeek
To bi moralo vrniti podatke kot:
-----------------------IZVORNI KAZALO---------------------------"kibana_sample_data_flights":
"preslikave":
"dayOfWeek":
"full_name": "dayOfWeek",
"preslikava":
"dayOfWeek":
"type": "celo število"
-------------------------PONOVNO INEXIRANI PODATKI-------------------------------
"kibana_sample_type_diff":
"preslikave":
"dayOfWeek":
"full_name": "dayOfWeek",
"preslikava":
"dayOfWeek":
"type": "long"
Zaključek
V tem priročniku smo preučili, kako delati z vozlišči Elasticsearch Ingest za predobdelavo dokumentov pred indeksiranjem in tako pretvoriti polje iz ene vrste v drugo.
Če želite izvedeti več, si oglejte dokumentacijo.
https: // www.elastična.co / guide / en / elasticsearch / reference / master / ingest.html