ElasticSearch 6.2-我有大约216,000个文档需要从我们的ElasticSearch索引之一中删除。我需要删除的每个文档都有一个文档编号。
我只有一个这样的文档被删除过:
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"]
}
}
}
AND
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的答案标记为答案。谢谢。