2013-05-14 3 views
14

Ich erstelle einen Index "myindex" mit einem bestimmten Dokumenttyp "mytype". Ich bin in der Lage, den Index zu löschen, aber es scheint, dass "Mytype" immer noch existiert, ohne an den Index gebunden zu sein.Wie lösche ich Dokumententypen in elasticsearch?

Wie kann ich "Mytype" loswerden?

+0

Wenn Sie einen Index löschen, werden die zugehörigen Typen ebenfalls gelöscht, sie können nicht ohne einen Index existieren. Was lässt dich denken, dass "mein Typ" noch existiert? – mguillermin

+0

Im "Kopf" -Plugin kann ich zu "Browser" gehen und sehen, dass "Mytype" unter "Typen" aufgeführt ist – Rolando

+0

Seltsam. Ein Mapping gehört zu einem Typ und ein Typ zu einem Index. Wenn Sie den Index löschen, verlieren Sie alle. Sind Sie sicher, dass Sie den Index mit der Lösch-API gelöscht haben? – javanna

Antwort

40

Wenn Sie den Index wirklich gelöscht haben, sollte das Mapping in diesem Index nicht mehr existieren. Haben Sie einen anderen Index in Ihrem Cluster mit einem ähnlichen Typnamen?

auf die Frage zu beantworten: How to delete document types in elasticsearch? verwenden Delete Mapping API:

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

EDIT: Von Elasticsearch 2.0, wird es nicht mehr möglich sein. Siehe Mapping changes. Sie müssen die Delete By Query plugin installieren und eine Abfrage ausführen, die Ihre Dokumente entfernt, aber das Mapping wird weiterhin bestehen. Es wird also höchstwahrscheinlich besser sein, Ihre Dokumente in einem anderen Index ohne den alten Typ neu zu indizieren.

Aber wie @mguillemin und @javanna sagte, wenn Sie einen Index löschen, jede Abbildung auf diesen Index gebunden ist ebenfalls gelöscht:

curl -XDELETE http://localhost:9200/index 
+0

Ich kann das über curl und sense tun, aber wie kann ich einen Typ mit python client für elasticsearch löschen, wie auch immer In der Lage, ein Dokument in einem Typ mit Löschfunktion zu löschen. –

+0

Ich habe die erste Antwort für elasticsearch 2.0 bearbeitet. – dadoonet

+0

Der Link zum Plugin zum Löschen von Abfragen sollte https://www.elastic.co/guide/en/elasticsearch/plugins/current/plugins-delete-by-query.html sein –

1

In der neuesten Version von Elasticsearch, länger sie nicht unterstützen Löschen Dokumenttypen. Es ist erwähnt in der documentation

Es ist nicht mehr möglich, die Zuordnung für einen Typ zu löschen. Stattdessen sollten Sie den Index löschen und mit den neuen Zuordnungen neu erstellen.

1

Sie können den Pfad _delete_by_query verwenden, um den Typ zu löschen.

POST index-name/type-name/_delete_by_query 
{ 
    "query": { 
     "match": { 
      "message": "some message" 
     } 
    } 
} 
1

Sie müssen nicht einmal den Anfragetext angeben. Nur

curl -XPOST http://<host>:9200/<index>/<type>/_delete_by_query