Darbs ar datu bāzēm ir ļoti jautri, bet dažreiz tas var būt sarežģīts, it īpaši, ja tiek izmantoti jau esošie dati.
Piemēram, ja vēlaties mainīt konkrēta lauka tipu, tas var prasīt, lai pakalpojums tiktu noņemts, kam var būt nopietnas sekas, it īpaši pakalpojumos, kas apstrādā lielu datu apjomu.
Par laimi, mēs varam izmantot Elasticsearch jaudīgās funkcijas, piemēram, Reindexing, ievadīšanas mezglus, cauruļvadus un procesorus, lai šādus uzdevumus padarītu ļoti vienkāršus.
Šī apmācība parādīs, kā mainīt lauka tipu noteiktā rādītājā uz citu, izmantojot mezglus Elasticsearch Ingest. Šīs pieejas izmantošana novērsīs dīkstāves, kas ietekmē pakalpojumus, vienlaikus pārvaldot lauka tipa maiņas uzdevumu izpildi.
Ievads ievadīšanas mezglos
Elasticsearch iesūtīšanas mezgls ļauj iepriekš apstrādāt dokumentus pirms to indeksēšanas.
Elasticsearch mezgls ir īpašs Elasticsearch gadījums; savienoti mezgli (vairāk nekā viens) veido vienu kopu.
Izmantojot pieprasījumu, varat apskatīt darbības mezglā pieejamos mezglus:
GET / _nodes /CURL komanda tam ir:
čokurošanās -XGET “http: // localhost: 9200 / _nodes /”Izpildot šo komandu, jums jāsniedz plaša informācija par mezgliem, kā parādīts zemāk (saīsinātā izvade):
"_nodes":
"kopā": 3,
"veiksmīgs": 3,
"neizdevās": 0
,
"cluster_name": "22e0bee6ef91461d82d9b0f1b4b13b4a",
"mezgli":
"gSlMjTKyTemoOX-EO7Em4w":
"name": "instance-0000000003",
"transport_address": "172.28.86.133: 19925 ",
"saimnieks": "172.28.86.133 ",
"ip": "172.28.86.133 ",
"versija": "7.10.2 ",
"build_flavor": "noklusējums",
"build_type": "docker",
"build_hash": "747e1cc71def077253878a59143c1f785afa92b9",
"total_indexing_buffer": 214748364,
"lomas": [
"dati",
"data_cold",
"data_content",
"data_hot",
"data_warm",
"norīt",
"meistars",
"remote_cluster_client",
“Pārveidot”
],
"atribūti":
"logiska_pieejamības_zona": "zona-0",
"servera_nosaukums": "instance-0000000003.22e0bee6ef91461d82d9b0f1b4b13b4a ",
"availability_zone": "us-west-1c",
"xpack.instalēts ":" true ",
"instances_konfigurācija": "aws.dati.highio.i3 ",
"pārveidot.mezgls ":" patiess ",
"reģions": "us-west-1"
,
"iestatījumi" :
"s3":
"klients" :
"elastīgs-iekšējs-22e0be":
"galapunkts": "s3-us-west-1.amazonaws.com "
,
--------------------------------izeja saīsināta---------------------
Pēc noklusējuma visi Elasticsearch mezgli iespējo uzņemšanu un spēj apstrādāt norīšanas darbības. Tomēr lielām uzņemšanas darbībām varat izveidot vienu mezglu, kas paredzēts tikai uzņemšanai.
Lai apstrādātu pre_process, pirms dokumentu indeksēšanas mums ir jādefinē cauruļvads, kurā norādītas priekšapstrādātāju sērijas.
Priekšapstrādātāji ir instrukciju komplekti, kas aptīti cauruļvadā un tiek izpildīti pa vienam.
Tālāk ir sniegta vispārīga sintakse, kā definēt cauruļvadu:
"description": "Pārvērst mani",
"procesori": [
"pārveidot":
"field": "id",
"type": "integer"
]
Apraksta rekvizīts pasaka, kas cauruļvadam jāsasniedz. Nākamais parametrs ir pirmapstrādes procesori, kas tiek nodoti kā saraksts to izpildes secībā.
Izveidojiet konvertēšanas cauruļvadu
Lai izveidotu cauruļvadu, kuru izmantosim, lai pārveidotu tipu, izmantojiet PUT pieprasījumu ar _ingest API galapunktu kā:
PUT _ingest / pipeline / convert_pipeline“Apraksts”: “lauku dayOfWeek pārveido par garu no vesela skaitļa”,
"pārstrādātāji": [
"pārveidot":
"field": "dayOfWeek",
"tips": "garš"
]
CURL izmantojiet komandu:
čokurošanās -XPUT "http: // localhost: 9200 / _ingest / pipeline / convert_pipeline" -H 'Content-Type: application / json' -d '"description": "lauks dayOfWeek pārveido par garu no vesela skaitļa" procesori ": [" convert ": " field ":" dayOfWeek "," type ":" long "] 'Reindex un konvertēšana Tips
Kad cauruļvads atrodas ievadīšanas mezglā, viss, kas mums jādara, ir izsaukt indeksēšanas API un nodot cauruļvadu kā argumentu pieprasījuma pamatteksta adresē:
POST _reindex“Avots”:
"index": "kibana_sample_data_flights"
,
"dest":
"index": "kibana_sample_type_diff",
"cauruļvads": "convert_pipeline"
CURL:
čokurošanās -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 " 'Pārbaudiet reklāmguvumu
Lai pārbaudītu, vai cauruļvads ir piemērots pareizi, izmantojiet GET pieprasījumu, lai ielādētu šo konkrēto lauku kā:
GET / kibana_sample_data_flights / _mapping / field / dayOfWeekGET / kibana_sample_type_diff / _mapping / field / dayOfWeek
Tam vajadzētu atgriezt datus kā:
-----------------------ORIGINAL INDEX---------------------------"kibana_sample_data_flights":
"kartējumi":
"dayOfWeek":
"full_name": "dayOfWeek",
"kartēšana":
"dayOfWeek":
"type": "integer"
-------------------------PIEVIENOTIE DATI-------------------------------
"kibana_sample_type_diff":
"kartējumi":
"dayOfWeek":
"full_name": "dayOfWeek",
"kartēšana":
"dayOfWeek":
"tips": "garš"
Secinājums
Šajā ceļvedī mēs esam apskatījuši, kā strādāt ar Elasticsearch Ingest mezgliem, lai pirms indeksēšanas sagatavotu dokumentus, tādējādi pārveidojot lauku no viena veida citā.
Apsveriet dokumentāciju, lai uzzinātu vairāk.
https: // www.elastīgs.co / guide / lv / elasticsearch / reference / master / ingest.html