我使用指定的文档类型“mytype”创建索引“myindex”。我可以删除索引,但似乎“mytype”仍然存在,而不受索引限制。如何删除elasticsearch中的文档类型?
我该如何摆脱“mytype”?
我使用指定的文档类型“mytype”创建索引“myindex”。我可以删除索引,但似乎“mytype”仍然存在,而不受索引限制。如何删除elasticsearch中的文档类型?
我该如何摆脱“mytype”?
如果您确实删除了索引,则此索引中的映射不应再存在。 您的群集中是否有其他类似名称的索引?
要回答的问题: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
我能够通过卷曲和感觉做到这一点,但我怎样才能删除使用python客户端的elasticsearch类型,但我能够使用删除功能删除一个类型的文档。 – 2015-05-12 13:00:19
我编辑了elasticsearch 2.0的初始答案。 – dadoonet 2015-09-18 09:41:37
通过查询插件删除的链接应该是https://www.elastic.co/guide/en/elasticsearch/plugins/current/plugins-delete-by-query.html – 2016-05-04 16:54:45
在弹性搜索的最新版本,不再支持删除文件类型。它在documentation中提到
不再可能删除某个类型的映射。相反,您应该删除索引并使用新的映射重新创建索引。
您可以使用_delete_by_query
路径来删除类型。
POST index-name/type-name/_delete_by_query
{
"query": {
"match": {
"message": "some message"
}
}
}
您甚至不需要指定请求正文。只是
curl -XPOST http://<host>:9200/<index>/<type>/_delete_by_query
如果您删除索引,则关联的类型也会被删除,它们不能在没有索引的情况下存在。是什么让你认为“mytype”仍然存在? – mguillermin 2013-05-14 15:28:36
在“头”插件,我可以去“浏览器”,看到“mytype”列在“类型” – Rolando 2013-05-14 18:13:24
奇怪。映射属于索引的类型和类型。如果你删除索引,你就会失去它们。你确定使用删除API删除了索引吗? – javanna 2013-05-14 18:31:35