我有弹性搜索6.2.1的php应用程序 我的要求
$delete = [
'index' => 'myIndex',
'type' => 'mytype',
'conflicts' => 'proceed',
'body' => [
'query' => [
'match' => [
"category_name" => 'myname'
]
],
]
];
$response = $this->client->deleteByQuery($delete);
我得到了这个回复
Array
(
[took] => 1
[timed_out] =>
[total] => 3
[deleted] => 0
[batches] => 1
[version_conflicts] => 3
[noops] => 0
[retries] => Array
(
[bulk] => 0
[search] => 0
)
[throttled_millis] => 0
[requests_per_second] => -1
[throttled_until_millis] => 0
[failures] => Array
(
)
)
在此之后它不会删除任何记录。 [已删除] => 0 为什么不删除?
这是什么意思? [version_conflicts] => 3
答案 0 :(得分:0)
来自ElasticSearch文档https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html#docs-delete-by-query
_delete_by_query
在索引启动时获取索引的快照并删除它找到的内容 使用内部版本控制。 这意味着您将获得一个版本 如果文档在快照之间发生更改,则会发生冲突 在处理删除请求时。 当版本 匹配文档已删除。
有一天我遇到了同样的问题,但是当我使用conflicts=proceed
时,它在Kibana控制台上为我工作。所以它也应该适用于PHP。
POST /properties/_delete_by_query/?conflicts=proceed
{
"query" : {
"match_all" : {}
}
}