Elasticsearch Odebrat pole

Elasticsearch Odebrat Pole



„Při práci s indexy Elasticarch se můžete setkat s instancí, kdy potřebujete odstranit pole z existujícího dokumentu. Elasticsearch bohužel neposkytuje nativní požadavek, který bychom mohli použít k provedení uvedené akce.

Můžeme však použít API pro aktualizaci dokumentů a předat skript, který nám umožní odstranit pole na základě jeho názvu.“







POZNÁMKA : Tento proces vyžaduje, abyste měli základní znalosti skriptování Elasticsearch a API pro aktualizaci dokumentů. Neváhejte prozkoumat dokumenty nebo naše výukové programy na toto téma, abyste se dozvěděli více.



Pojďme se ponořit.



Zkontrolujte, zda dokument existuje

Před odstraněním pole z konkrétního dokumentu je dobré se ujistit, že cílový dokument v indexu existuje.





K načtení cílového dokumentu můžeme použít vyhledávací API.

Předpokládejme například, že máme index kibana_sample_logs_data. V indexu můžeme vyhledat dokument, který obsahuje konkrétní IP.



POZNÁMKA : Výše ​​uvedený příklad slouží pouze pro ilustrační účely. Chcete-li ověřit, zda je konkrétní dokument v rejstříku dostupný, můžete použít různé metody.

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

Výsledný výstup:

{
'vzal': 3,
'timed_out': nepravda,
'_shards': {
'celkem': 1,
'úspěšný': 1,
'přeskočeno': 0,
'neúspěšné': 0
},
'hity': {
'total': {
'hodnota': 17,
'relation': 'eq'
},
'max_score': null,
'hity': []
}

}

Dále může jednoduchý skript odstranit cílové pole z dokumentu. Začněte přihlášením do konzole Kibana a spusťte příkaz:

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

Výše uvedený požadavek používá bezbolestný kontextový skript k aktualizaci dokumentu a odstranění pole „ip“ se zadaným ID.

Výstup:

{
'_index': 'kibana_sample_data_logs',
'_id': '5pA49IIBkTjaZ6TtsiB5',
'_version': 2,
'result': 'aktualizováno',
'_shards': {
'celkem': 2,
'úspěšný': 2,
'neúspěšné': 0
},
'_seq_no': 14074,
'_primární_termín': 1
}

Jakmile je dokument aktualizován, můžete ověřit spuštěním dotazu.:

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

Výše uvedený požadavek by měl vrátit data uložená v dokumentu se zadaným ID.

Můžeme ověřit, že pole IP již v dokumentu není.

Závěr

V tomto článku jste se naučili, jak používat funkce skriptování Elasticsearch k odstranění pole z existujícího dokumentu.

Děkuji za přečtení!!