无法使用 _delete_by_query 删除 Elasticsearch 中的项目
Posted
技术标签:
【中文标题】无法使用 _delete_by_query 删除 Elasticsearch 中的项目【英文标题】:Can't delete item in Elasticsearch with _delete_by_query 【发布时间】:2019-03-20 06:25:36 【问题描述】:我想根据简单的条件删除 Elasticsearch 数据库中的一些项目。我尝试通过 Postman 应用程序来实现。所以我有一个 POST 请求到这个 url localhost:9200/newlocalsearch/_delete_by_query 这个 json 查询:
"query":
"bool":
"must_not": [
"exists": "field": "ico"
]
但是当我向数据库发送请求时,它会返回这个错误响应:
"took": 51,
"timed_out": false,
"total": 1,
"deleted": 0,
"batches": 1,
"version_conflicts": 1,
"noops": 0,
"retries":
"bulk": 0,
"search": 0
,
"throttled_millis": 0,
"requests_per_second": -1,
"throttled_until_millis": 0,
"failures": [
"index": "newlocalsearch",
"type": "doc",
"id": "0",
"cause":
"type": "version_conflict_engine_exception",
"reason": "[doc][0]: version conflict, current version [-1] is different than the one provided [1]",
"index_uuid": "jZbdUfqwSAqtFELXB2Z2AQ",
"shard": "0",
"index": "newlocalsearch"
,
"status": 409
]
我不明白会发生什么。有没有人在那里:) 谁知道这意味着什么?非常感谢。
【问题讨论】:
尝试添加为获取参数'conflicts=proceed&refresh=wait_for' 这是什么意思。为什么我的 POST 请求无法执行?我需要了解发生了什么。 elastic.co/guide/en/elasticsearch/guide/current/…, discuss.elastic.co/t/…?conflicts=proceed&refresh&slices=5
使用切片运行它
【参考方案1】:
您可能需要先刷新索引:
向localhost:9200/newlocalsearch/_refresh
发送POST
请求
【讨论】:
以上是关于无法使用 _delete_by_query 删除 Elasticsearch 中的项目的主要内容,如果未能解决你的问题,请参考以下文章
ElasticSearch实战(二十二)-查询并删除匹配文档(delete_by_query)
ElasticSearch实战(二十二)-查询并删除匹配文档(delete_by_query)
elasticsearch常用命令之_refresh_delete_by_querymappings创建索引结构exists_sourcebool查询(mustshould)大于小于符号