Elasticsearch Odstrani polje

Elasticsearch Odstrani Polje



»Pri delu z indeksi Elasticearch lahko naletite na primer, ko morate odstraniti polje iz obstoječega dokumenta. Na žalost Elasticsearch ne nudi izvorne zahteve, ki bi jo lahko uporabili za izvedbo omenjenega dejanja.

Lahko pa uporabimo API za posodobitev dokumenta in posredujemo skript, ki nam omogoča, da odstranimo polje na podlagi njegovega imena.«







OPOMBA : Ta postopek zahteva, da imate osnovno znanje o skriptiranju Elasticsearch in API-ju za posodabljanje dokumentov. Če želite izvedeti več, lahko raziščete dokumente ali naše vadnice na to temo.



Poglobimo se.



Preverite, ali dokument obstaja

Preden odstranite polje iz določenega dokumenta, je dobro zagotoviti, da ciljni dokument obstaja v indeksu.





Za pridobitev ciljnega dokumenta lahko uporabimo iskalni API.

Recimo, da imamo indeks kibana_sample_logs_data. V indeksu lahko iščemo dokument, ki vsebuje določen IP.



OPOMBA : Zgornji primer je uporabljen samo za ilustracijo. Za preverjanje, ali je določen dokument na voljo v indeksu, lahko uporabite različne metode.

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_search' -H 'kbn-xsrf: poročanje' -H 'Vrsta vsebine: aplikacija/json' -d'
{
'velikost': 0,
'poizvedba': {'ujemanje': {
'ip': '171.24.97.162'
}}
}'

Rezultat:

{
'vzel': 3,
'timed_out': napačno,
'_odlomki': {
'skupaj': 1,
'uspešno': 1,
'preskočeno': 0,
'neuspešno': 0
},
'zadetki': {
'skupaj': {
'vrednost': 17,
'relacija': 'eq'
},
'max_score': nič,
'zadetki': []
}

}

Nato lahko preprost skript odstrani ciljno polje iz dokumenta. Začnite tako, da se prijavite v svojo konzolo Kibana in zaženete ukaz:

curl -XPOST 'http://localhost:9200/kibana_sample_data_logs/_update/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: poročanje' -H 'Vrsta vsebine: aplikacija/json' -d'
{
'script': 'ctx._source.remove('\''ip'\'')'
}'

Zgornja zahteva uporablja neboleč kontekstni skript za posodobitev dokumenta in odstranitev polja »ip« z navedenim ID-jem.

Izhod:

{
'_index': 'kibana_sample_data_logs',
'_id': '5pA49IIBkTjaZ6TtsiB5',
'_različica': 2,
'rezultat': 'posodobljeno',
'_odlomki': {
'skupaj': 2,
'uspešno': 2,
'neuspešno': 0
},
'_seq_no': 14074,
'_primarni_term': 1
}

Ko je dokument posodobljen, lahko preverite tako, da zaženete poizvedbo.:

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_doc/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: poročanje'

Zgornja zahteva mora vrniti podatke, shranjene v dokumentu, z navedenim ID-jem.

Preverimo lahko, da polja IP ni več v dokumentu.

Zaključek

V tem članku ste se naučili, kako uporabiti zmožnosti skriptiranja Elasticsearch za odstranitev polja iz obstoječega dokumenta.

Hvala za branje!!