2013-05-14 29 views
14

我使用指定的文档类型“mytype”创建索引“myindex”。我可以删除索引,但似乎“mytype”仍然存在,而不受索引限制。如何删除elasticsearch中的文档类型?

我该如何摆脱“mytype”?

+0

如果您删除索引,则关联的类型也会被删除,它们不能在没有索引的情况下存在。是什么让你认为“mytype”仍然存在? – mguillermin 2013-05-14 15:28:36

+0

在“头”插件,我可以去“浏览器”,看到“mytype”列在“类型” – Rolando 2013-05-14 18:13:24

+0

奇怪。映射属于索引的类型和类型。如果你删除索引,你就会失去它们。你确定使用删除API删除了索引吗? – javanna 2013-05-14 18:31:35

回答

40

如果您确实删除了索引,则此索引中的映射不应再存在。 您的群集中是否有其他类似名称的索引?

要回答的问题:How to delete document types in elasticsearch?,使用Delete Mapping API

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

编辑:从elasticsearch 2.0,这将是不可能的了。见Mapping changes。您将不得不安装Delete By Query plugin并运行一个将删除文档的查询,但映射仍然存在。因此,最好将文档重新索引到另一个索引而不使用旧类型。

但作为@mguillemin和@javanna说,当你删除索引,每个映射连接到该指数也将被删除:

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

我能够通过卷曲和感觉做到这一点,但我怎样才能删除使用python客户端的elasticsearch类型,但我能够使用删除功能删除一个类型的文档。 – 2015-05-12 13:00:19

+0

我编辑了elasticsearch 2.0的初始答案。 – dadoonet 2015-09-18 09:41:37

+0

通过查询插件删除的链接应该是https://www.elastic.co/guide/en/elasticsearch/plugins/current/plugins-delete-by-query.html – 2016-05-04 16:54:45

1

在弹性搜索的最新版本,不再支持删除文件类型。它在documentation中提到

不再可能删除某个类型的映射。相反,您应该删除索引并使用新的映射重新创建索引。

1

您可以使用_delete_by_query路径来删除类型。

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

您甚至不需要指定请求正文。只是

curl -XPOST http://<host>:9200/<index>/<type>/_delete_by_query 
相关问题