Elasticsearch-Entfernungsfeld

Elasticsearch Entfernungsfeld



„Bei der Arbeit mit Elasticearch-Indizes kann es vorkommen, dass Sie ein Feld aus einem vorhandenen Dokument entfernen müssen. Leider stellt Elasticsearch keine native Anfrage bereit, mit der wir die genannte Aktion ausführen können.

Wir können jedoch die Dokumentaktualisierungs-API verwenden und ein Skript übergeben, mit dem wir ein Feld basierend auf seinem Namen entfernen können.“







HINWEIS : Dieser Prozess erfordert Grundkenntnisse in Elasticsearch-Skripting und der Dokumentaktualisierungs-API. Sehen Sie sich gerne die Dokumentation oder unsere Tutorials zu diesem Thema an, um mehr zu erfahren.



Tauchen wir ein.



Überprüfen Sie, ob das Dokument vorhanden ist

Bevor Sie ein Feld aus einem bestimmten Dokument entfernen, sollten Sie sicherstellen, dass das Zieldokument im Index vorhanden ist.





Wir können die Such-API verwenden, um das Zieldokument abzurufen.

Angenommen, wir haben den Index kibana_sample_logs_data. Wir können den Index nach einem Dokument durchsuchen, das eine bestimmte IP enthält.



HINWEIS : Das obige Beispiel dient nur zu Illustrationszwecken. Sie können verschiedene Methoden verwenden, um zu überprüfen, ob ein bestimmtes Dokument im Index verfügbar ist.

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_search' -H 'kbn-xsrf: Reporting' -H 'Content-Type: application/json' -d'
{
'Größe': 0,
'Abfrage': {'Übereinstimmung': {
'ip': '171.24.97.162'
}}
}'

Ergebnisausgabe:

{
'nahm': 3,
'timed_out': falsch,
'_shards': {
'gesamt': 1,
'erfolgreich': 1,
'übersprungen': 0,
'fehlgeschlagen': 0
},
'Treffer': {
'gesamt': {
'Wert': 17,
'Beziehung': 'eq'
},
'max_score': null,
'Treffer': []
}

}

Als nächstes kann ein einfaches Skript ein Zielfeld aus dem Dokument entfernen. Melden Sie sich zunächst bei Ihrer Kibana-Konsole an und führen Sie den Befehl aus:

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'\'')'
}'

Die obige Anforderung verwendet ein schmerzloses Kontextskript, um das Dokument zu aktualisieren und das „ip“-Feld mit der angegebenen ID zu entfernen.

Ausgabe:

{
'_index': 'kibana_sample_data_logs',
'_id': '5pA49IIBkTjaZ6TtsiB5',
'_Version 2,
'Ergebnis': 'aktualisiert',
'_shards': {
'gesamt': 2,
'erfolgreich': 2,
'fehlgeschlagen': 0
},
'_seq_no': 14074,
'_primary_term': 1
}

Sobald das Dokument aktualisiert ist, können Sie dies überprüfen, indem Sie die Abfrage ausführen.:

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

Die obige Anfrage sollte die im Dokument gespeicherten Daten mit der angegebenen ID zurückgeben.

Wir können überprüfen, ob das IP-Feld nicht mehr im Dokument enthalten ist.

Fazit

In diesem Artikel haben Sie gelernt, wie Sie die Skriptfunktionen von Elasticsearch verwenden, um ein Feld aus einem vorhandenen Dokument zu entfernen.

Danke fürs Lesen!!