17

我用指定的文档类型“mytype”创建了一个索引“myindex”。我可以删除索引,但似乎“mytype”仍然存在而未绑定到索引。

如何摆脱“我的类型”?

4

4 回答 4

45

如果你真的删除了索引,那么这个索引中的映射应该不存在了。您的集群中是否还有其他具有相似类型名称的索引?

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

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

编辑:从 elasticsearch 2.0 开始,它就不可能了。请参阅映射更改。您必须安装Delete By Query 插件并运行一个查询,该查询将删除您的文档,但映射仍然存在。因此,最好在另一个没有旧类型的索引中重新索引您的文档。

但正如@mguillemin 和@javanna 所说,当您删除索引时,附加到该索引的每个映射也会被删除:

curl -XDELETE http://localhost:9200/index
于 2013-05-15T08:03:30.947 回答
6

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

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

如需进一步阅读,请参阅文档

于 2017-10-17T03:20:01.090 回答
3

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

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

于 2017-06-06T19:00:11.077 回答
1

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

curl -XPOST http://<host>:9200/<index>/<type>/_delete_by_query
于 2017-12-22T10:34:22.183 回答