wake-up-neo.com

Daten aus ElasticSearch entfernen

Ich bin neu in ElasticSearch . Ich versuche herauszufinden, wie ich Daten aus ElasticSearch entfernen kann. Ich habe meine Indizes gelöscht. Dies scheint jedoch die Daten selbst nicht zu entfernen. Die anderen Dinge, die ich gesehen habe, weisen auf die Funktion Delete by Query hin. Ich bin mir jedoch nicht mal sicher, worüber ich fragen soll. Ich kenne meine Indizes. Im Wesentlichen möchte ich herausfinden, wie man a

DELETE FROM [Index]

Von PostMan in Chrome. Ich habe jedoch kein Glück. Es scheint, egal was ich tue, die Daten hängen herum. Bisher habe ich die Indizes erfolgreich gelöscht, indem ich das DELETE-HTTP-Verb in PostMan und eine URL wie die folgende verwendet habe:

   http://localhost:9200/[indexName]

Dies scheint jedoch nicht die Daten (auch bekannt als docs) selbst zu entfernen.

299
user687554

Sie können mit cURL oder visuell mit einem der vielen Tools löschen, die Open Source-Enthusiasten für Elasticsearch erstellt haben.

Verwenden von cURL

curl -XDELETE localhost:9200/index/type/documentID

z.B.

curl -XDELETE localhost:9200/shop/product/1

Sie erhalten dann eine Antwort, ob dies erfolgreich war oder nicht. Sie können einen gesamten Index oder Typen mit einem Index löschen. Sie können einen Typ auch löschen, indem Sie die Dokument-ID wie folgt weglassen.

curl -XDELETE localhost:9200/shop/product

Wenn Sie einen Index löschen möchten -

curl -XDELETE localhost:9200/shop

Wenn Sie mehr als einen Index löschen möchten, der einer bestimmten Namenskonvention folgt (beachten Sie den Platzhalter *), -

curl -XDELETE localhost:9200/.mar* 

Visuell

Wie oben erwähnt, gibt es verschiedene Tools, die ich hier nicht auflisten werde, aber ich werde Sie mit einem verknüpfen, mit dem Sie sofort loslegen können, lokalisiert hier . Dieses Tool heißt KOPF. Um eine Verbindung zu Ihrem Host herzustellen, klicken Sie oben links auf das Logo und geben Sie die URL Ihres Clusters ein.

Sobald die Verbindung hergestellt ist, können Sie Ihren gesamten Cluster verwalten, löschen, optimieren und optimieren.

353
Nathan

Wenn Sie jemals alle Indizes löschen müssen, kann dies nützlich sein:

curl -X DELETE 'http://localhost:9200/_all'

Power Shell:

Invoke-WebRequest -method DELETE http://localhost:9200/_all
402
kha

Die Dokumentation (oder The Definitive Guide ) besagt, dass Sie auch die nächste Abfrage verwenden können, um alle zu löschen Indizes:

curl -XDELETE 'http://localhost:9200/*'

Und es gibt einen wichtigen Hinweis:

Für manche ist die Möglichkeit, alle Ihre Daten mit einem einzigen Befehl zu löschen, eine sehr beängstigende Perspektive. Wenn Sie die Möglichkeit eines versehentlichen Massenlöschens ausschließen möchten, können Sie in Ihrem elasticsearch.yml Folgendes auf true setzen:

action.destructive_requires_name: true

47
skovorodkin

Sie müssen eine DELETE Anfrage an senden

http://[your_Host]:9200/[your_index_name_here]

Sie können auch ein einzelnes Dokument löschen:

http://[your_Host]:9200/[your_index_name_here]/[your_type_here]/[your_doc_id]

Ich schlage vor, dass Sie elastichammer verwenden.

Nach dem Löschen können Sie nachsehen, ob der Index mit der folgenden URL noch vorhanden ist: http://[your_Host]:9200/_stats/

Viel Glück!

25
Jesper

Durch Löschen des Index wird das Mapping gelöscht und mitgetippt. Sie können alle Zeilen mit der folgenden Abfrage löschen

curl -XDELETE 'localhost:9200/Twitter/Tweet/_query?pretty' -d'
{
   "query": { 
      "match_all": 
   }
}'

Für die obige Abfrage müssen Sie jedoch das Plug-in zum Löschen nach Abfrage installieren, da Elasticsearch 2.0.0-beta1 zum Löschen nach Abfrage von der Haupt-API entfernt wurde

Install delete-by-query plugin

Sudo bin/plugin install delete-by-query

Für mehr

http://blog.appliedinformaticsinc.com/how-to-delete-elasticsearch-data-records-by-dsl-query/

14
shahid ashraf
#list all index:       curl -XGET http://localhost:9200/_cat/indices?v 

enter image description here

#delete index:         curl -XDELETE 'localhost:9200/index_name'
#delete all indices:   curl -XDELETE 'localhost:9200/_all'
#delete document   :   curl -XDELETE 'localhost:9200/index_name/type_name/document_id'

Installieren Sie Kibana . Kibana verfügt über ein intelligenteres Entwickler-Tool, mit dem sich Abfragen einfach erstellen lassen.

enter image description here

10
ysk

Für Massenlöschungen per Abfrage können Sie spezielle Löschungen per Abfrage-API verwenden :

$ curl -XDELETE 'http://localhost:9200/Twitter/Tweet/_query' -d '{
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

In der Vergangenheit wurde diese API gelöscht und dann wieder eingeführt

Wer interessant ist, hat eine lange Geschichte.

  1. In der ersten Version dieser Antwort verweise ich auf die Dokumentation von elasticsearch Version 1.6 . Darin wurde diese Funktionalität als veraltet markiert, funktioniert aber gut.
  2. In elasticsearch Version 2.0 wurde es in ein separates Plugin verschoben . Und auch Gründe, warum es Plugin wurde erklärt .
  3. Und es erschien wieder in der Kern-API in Version 5.0 !
6
Hubbitus

Sie können einen Index in python wie folgt löschen

from elasticsearch import Elasticsearch

es = Elasticsearch([{'Host':'localhost', 'port':'9200'}])

es.index(index='grades',doc_type='ist_samester',id=1,body={
    "Name":"Programming Fundamentals",
    "Grade":"A"
})

es.indices.delete(index='grades')
6
Farid ullah

einfachster weg!

Endpoint :
http://localhost:9201/Twitter/_delete_by_query

Payload :
{
  "query": { 
    "match": {
      "message": "some message"
    }
  }
}

dabei ist Twitter der Index bei der elastischen Suche

ref; https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html

5
Edwin Ikechukwu

Hier gibt es viele gute Antworten, aber ich möchte auch Folgendes hinzufügen:

  • Wenn Sie mit AWS ElasticSearch-Dienst, Sie können keine Indizes löschen/löschen arbeiten. Anstatt Indizes zu löschen, müssen Sie sie neu indizieren .
4

Sie können entweder den gesamten Index, den Dokumenttyp oder bestimmte ID-Daten löschen. Dies sind die drei Möglichkeiten:

  1. curl -XDELETE localhost:9200/index_name

  2. curl -XDELETE localhost:9200/index_name/doc-type

  3. curl -XDELETE localhost:9200/index_name/doc-type/documentId

und wenn Sie den gesamten Index löschen möchten, wählen Sie einen Platzhalter.

3
Gaurav

So listen Sie die Indizes auf curl -L localhost:9200/_cat/indices

9200 Standardport [Ändern Sie den Port, wenn Sie einen anderen Port verwenden]

Sie werden wahrscheinlich alle Indizes finden, die mit dem logstash-yyyy-mm-dd -Format (logstash- *) beginnen.

Sie können alle Indizes sehen und verwenden

Um die Indizes und Daten zu löschen, folgen Sie dem Befehl.

curl -XDELETE localhost:9200/index_name (wodurch sowohl die Daten als auch die Indizes entfernt werden).

3
rajdeepbs29

Ich wollte den Logstash-Index löschen und habe viel nach verschiedenen Tools wie Curl gesucht. Hab aber am Ende die Lösung gefunden. Loggen Sie sich in Kibana ein. Gehen Sie zur Registerkarte Dev Tools und geben Sie DELETE /logstash-* in das Abfragefeld ein und klicken Sie auf den grünen Pfeil. Wenn Sie "Bestätigt" erhalten: Wahr als Antwort, bedeutet dies, dass die Daten gelöscht wurden.

3
Ashish Kumar

Sie können den Index auch mit der DELETE-Aktion in 'elasticsearch head' ( Chrome-Plugin ) löschen. Fügen Sie es Ihrem chrome hinzu und verbinden Sie es mit Ihrem Host. Dort finden Sie alle Ihre Indizes. Wenn Sie auf die Schaltfläche "Aktionen" unterhalb des zu löschenden Index klicken, finden Sie in der Dropdown-Liste die Option "LÖSCHEN". Klicken Sie darauf und geben Sie im Popup DELETE ein. Ihr Index wird gelöscht. Mit der Erweiterung 'Elasticsearch head' können Sie Ihre Indizes und Daten auf einfache Weise anzeigen und verwalten.

2
prateek kumar
curl -X DELETE 'https://localhost:9200/_all'

Ändern Sie http in https, wenn Sie in Ihrer Anwendung ein SSL-Zertifikat verwenden

1
Vikash Chauhan