„Când lucrați cu indici Elasticearch, este posibil să întâlniți o instanță în care trebuie să eliminați un câmp dintr-un document existent. Din păcate, Elasticsearch nu oferă o solicitare nativă pe care o putem folosi pentru a efectua acțiunea menționată.
Putem, totuși, să folosim API-ul de actualizare a documentelor și să transmitem un script care ne permite să eliminăm un câmp pe baza numelui său.”
NOTĂ : Acest proces necesită să aveți cunoștințe de bază despre scriptingul Elasticsearch și despre API-ul de actualizare a documentelor. Simțiți-vă liber să explorați documentele sau tutorialele noastre pe această temă pentru a afla mai multe.
Să ne scufundăm.
Verificați dacă documentul există
Înainte de a elimina un câmp dintr-un anumit document, este bine să vă asigurați că documentul țintă există în index.
Putem folosi API-ul de căutare pentru a prelua documentul țintă.
De exemplu, să presupunem că avem indexul kibana_sample_logs_data. Putem căuta în index un document care conține un IP specific.
NOTĂ : Exemplul de mai sus este folosit doar în scop ilustrativ. Puteți utiliza diverse metode pentru a verifica dacă un anumit document este disponibil în index.
curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_search' -H 'kbn-xsrf: raportare' -H 'Tip de conținut: aplicație/json' -d'{
'dimensiune': 0,
'interogare': {'potrivire': {
'ip': '171.24.97.162'
}}
}'
Ieșire rezultată:
{„a luat”: 3,
„timed_out”: fals,
„_shards”: {
„total”: 1,
„de succes”: 1,
„sărit”: 0,
„eșuat”: 0
},
„hituri”: {
„total”: {
„valoare”: 17,
„relație”: „echivalent”
},
„max_score”: nul,
„hituri”: []
}
}
Apoi, un script simplu poate elimina un câmp țintă din document. Începeți prin a vă conecta la consola Kibana și executați comanda:
curl -XPOST 'http://localhost:9200/kibana_sample_data_logs/_update/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: raportare' -H 'Tip de conținut: aplicație/json' -d'{
'script': 'ctx._source.remove('\''ip'\'')'
}'
Solicitarea de mai sus folosește un script de context nedureros pentru a actualiza documentul și pentru a elimina câmpul „ip” cu ID-ul specificat.
Ieșire:
{'_index': 'kibana_sample_data_logs',
'_id': '5pA49IIBkTjaZ6TtsiB5',
„_versiunea”: 2,
'rezultat': 'actualizat',
„_shards”: {
„total”: 2,
„de succes”: 2,
„eșuat”: 0
},
„_seq_no”: 14074,
„_termen_primar”: 1
}
Odată ce documentul este actualizat, puteți verifica prin rularea interogării.:
curl -XGET „http://localhost:9200/kibana_sample_data_logs/_doc/5pA49IIBkTjaZ6TtsiB5” -H „kbn-xsrf: raportare”Solicitarea de mai sus ar trebui să returneze datele stocate în document cu ID-ul specificat.
Putem verifica că câmpul IP nu mai este în document.
Concluzie
În acest articol, ați învățat cum să utilizați capabilitățile de scriptare Elasticsearch pentru a elimina un câmp dintr-un document existent.
Multumesc pentru lectura!!