Ich weiß, dass man über deleteByQuery alle Dokumente eines bestimmten Typs löschen kann.
Beispiel:
curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{
"query" : {
"term" : { "user" : "kimchy" }
}
}'
Aber ich habe KEINEN Begriff und möchte einfach alle Dokumente dieses Typs löschen, egal welcher Begriff. Was ist die beste Vorgehensweise, um dies zu erreichen? Leerer Begriff funktioniert nicht.
elasticsearch
Michael Leiss
quelle
quelle
quelle
-H 'Content-Type: application/json'
In ElasticSearch 5.x ist die API delete_by_query standardmäßig vorhanden
POST: http://localhost:9200/index/type/_delete_by_query
quelle
Torsten Engelbrechts Kommentar in der Antwort von John Petrones wurde erweitert:
(Ich wollte Johns Antwort nicht bearbeiten, da sie positiv bewertet wurde und als Antwort festgelegt ist und ich möglicherweise einen Fehler eingeführt habe.)
quelle
Sie können Dokumente mit der folgenden Abfrage aus dem Typ löschen:
Ich habe diese Abfrage in Kibana und Elastic 5.5.2 getestet
quelle
Ab Elasticsearch 2.x ist das Löschen nicht mehr zulässig, da Dokumente im Index verbleiben und eine Indexbeschädigung verursachen.
quelle
news1, news2 and so on
und einen Alias für den aktuell aktiven Index zumnews
Pfad einzurichten. Natürlich ist der Name des Index nur als Beispiel. Hier finden Sie ein vollständiges Beispiel für [Index-Alias] ( elastic.co/guide/en/elasticsearch/reference/current/… ) und einen Artikel, in dem eine Fallstudie erläutert wird.Die obigen Antworten funktionieren mit ES 6.2.2 aufgrund der strengen Überprüfung des Inhaltstyps für Elasticsearch-REST-Anforderungen nicht mehr . Der
curl
Befehl, den ich letztendlich verwendet habe, ist folgender:quelle
In der Kibana- Konsole:
quelle
Sie haben diese Alternativen:
1) Löschen Sie einen ganzen Index:
Beispiel:
Weitere Details finden Sie hier - https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-delete-index.html
2) Löschen Sie per Abfrage diejenigen, die übereinstimmen:
* Hier ist Mentorz ein Indexname und Benutzer ein Typ
quelle
Ab ES 1.5.3 ist die API zum Löschen nach Abfrage veraltet und seit ES 2.0 vollständig entfernt
Anstelle der API ist das Löschen nach Abfrage jetzt ein Plugin .
Um das Plugin "Nach Abfrage löschen" verwenden zu können, müssen Sie das Plugin auf allen Knoten des Clusters installieren:
Die Verwendung des Plugins entspricht der alten API. Sie müssen nichts an Ihren Abfragen ändern - dieses Plugin lässt sie einfach funktionieren.
* Vollständige Informationen darüber, WARUM die API entfernt wurde, finden Sie hier .
quelle
(Der Ruf ist nicht hoch genug, um einen Kommentar abzugeben.) Der zweite Teil von John Petrones Antwort funktioniert - keine Abfrage erforderlich. Der Typ und alle in diesem Typ enthaltenen Dokumente werden gelöscht. Sie können jedoch einfach neu erstellt werden, wenn Sie ein neues Dokument für diesen Typ indizieren.
Nur um klarzustellen:
$ curl -XDELETE 'http://localhost:9200/twitter/tweet'
Hinweis: Dies ist die Zuordnung löschen! Wie bereits erwähnt, kann es jedoch einfach neu erstellt werden, indem ein neues Dokument erstellt wird.
quelle
Ich benutze Elasticsearch 7.5 und wenn ich es benutze
das wird unter Fehler werfen.
Ich muss
-H 'Content-Type: application/json'
der Anfrage auch einen zusätzlichen Header hinzufügen , damit es funktioniert.quelle
Nur um ein paar Cent hinzuzufügen.
Die "delete_by_query" erwähnte ist weiterhin als Plugin in elasticsearch 2.x verfügbar.
Obwohl in der neuesten kommenden Version 5.x durch "Löschen durch Abfrage-API" ersetzt wird
quelle
Elasticsearch 2.3 die Option
in elasticsearch.yml mache die Reise
quelle
Wenn Sie ein Dokument nach einem Datum löschen möchten. Sie können die Kibana-Konsole verwenden (v.6.1.2).
quelle