【发布时间】:2019-03-04 22:35:11
【问题描述】:
ElasticSearch 6.2 - 我需要从我们的 ElasticSearch 索引之一中删除大约 216,000 个文档。对于需要删除的每份文件,我都有一个文件编号。
我只删除过这样的单个文档:
DELETE: http://{{elasticip}}:9200/{{index}}/_doc/101
如果我知道文档的 _id 字段的所有 216,000 个值,如何一次删除所有 216,000 个文档?
我之前在 ElasticSearch 中使用过update_by_query,我发现实际上还有一个delete_by_query 函数可用,但我从未尝试过。所以假设我需要删除的文档是 id 的 1,2,3,4,5,并假设调用如下所示:
POST http://{{elasticip}}:9200/{{index}}/_delete_by_query
身体会是什么样子?
编辑 1: 根据@nitzien 的回答,我尝试了以下两个电话:
POST http://{{elasticip}}:9200/{{index}}/_delete_by_query
{
"query": {
"ids" : {
"type" : "_doc",
"values" : ["1", "2", "3", "4", "5"]
}
}
}
与
POST http://{{elasticip}}:9200/{{index}}/_delete_by_query
{
"query": {
"ids" : {
"type" : "_id",
"values" : ["1", "2", "3", "4", "5"]
}
}
}
但是,在这两种情况下,我都会在回复中收到 "deleted": 0"。
我已经确认这5个id肯定存在于索引中,我可以使用DELETE语句,一一删除成功。
编辑 2 - 问题已解决 - 我在此索引中的文档类型不是 _doc 它是 _ssldoc 因此必须在 @nitzien 提供的查询中更新。将nitzien的答案标记为答案。谢谢。
【问题讨论】:
标签: elasticsearch