Elasticsearch Remove Field

Elasticsearch Remove Field



'Kapag nagtatrabaho sa mga indeks ng Elasticearch, maaari kang makatagpo ng isang pagkakataon kung saan kailangan mong mag-alis ng isang field mula sa isang umiiral na dokumento. Sa kasamaang palad, ang Elasticsearch ay hindi nagbibigay ng katutubong kahilingan na magagamit namin upang maisagawa ang nasabing aksyon.

Gayunpaman, maaari naming gamitin ang document update API at magpasa ng script na nagbibigay-daan sa aming mag-alis ng field batay sa pangalan nito.”







TANDAAN : Ang prosesong ito ay nangangailangan sa iyo na magkaroon ng pangunahing kaalaman sa Elasticsearch scripting at ang document update API. Huwag mag-atubiling galugarin ang mga doc o ang aming mga tutorial sa paksa upang matuto nang higit pa.



Sumisid tayo.



Suriin Kung May Dokumento

Bago mag-alis ng field mula sa isang partikular na dokumento, magandang tiyakin na ang target na dokumento ay umiiral sa loob ng index.





Magagamit namin ang search API para kunin ang target na dokumento.

Halimbawa, ipagpalagay na mayroon kaming kibana_sample_logs_data index. Maaari kaming maghanap sa index para sa isang dokumento na naglalaman ng isang partikular na IP.



TANDAAN : Ang halimbawa sa itaas ay ginagamit para sa mga layunin ng paglalarawan lamang. Maaari kang gumamit ng iba't ibang paraan upang i-verify kung ang isang partikular na dokumento ay magagamit sa index.

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_search' -H 'kbn-xsrf: pag-uulat' -H 'Content-Type: application/json' -d'
{
'laki': 0,
'query': {'match': {
'ip': '171.24.97.162'
}}
}'

Nagreresultang output:

{
'kinuha': 3,
'timed_out': mali,
'_shards': {
'kabuuan': 1,
'matagumpay': 1,
'nilaktawan': 0,
'nabigo': 0
},
'mga hit': {
'kabuuan': {
'halaga': 17,
'relasyon': 'eq'
},
'max_score': null,
'mga hit': []
}

}

Susunod, maaaring alisin ng isang simpleng script ang isang target na field mula sa dokumento. Magsimula sa pamamagitan ng pag-log in sa iyong Kibana console at patakbuhin ang command:

curl -XPOST 'http://localhost:9200/kibana_sample_data_logs/_update/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: pag-uulat' -H 'Content-Type: application/json' -d'
{
'script': 'ctx._source.remove('\''ip'\'')'
}'

Ang kahilingan sa itaas ay gumagamit ng walang sakit na script ng konteksto upang i-update ang dokumento at alisin ang field na 'ip' na may tinukoy na ID.

Output:

{
'_index': 'kibana_sample_data_logs',
'_id': '5pA49IIBkTjaZ6TtsiB5',
'_bersyon': 2,
'result': 'na-update',
'_shards': {
'kabuuan': 2,
'matagumpay': 2,
'nabigo': 0
},
'_seq_no': 14074,
'_primary_term': 1
}

Kapag na-update na ang dokumento, maaari mong i-verify sa pamamagitan ng pagpapatakbo ng query.:

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_doc/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: pag-uulat'

Dapat ibalik ng kahilingan sa itaas ang data na nakaimbak sa dokumento na may tinukoy na ID.

Maaari naming i-verify na ang IP field ay wala na sa dokumento.

Konklusyon

Sa artikulong ito, natutunan mo kung paano gamitin ang mga kakayahan sa pag-script ng Elasticsearch para mag-alis ng field mula sa isang kasalukuyang dokumento.

Salamat sa pagbabasa!!