我有PHP应用程序与elasticsearch 6.2.1我的请求
$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为什么它不删除?
这意味着什么?[版本冲突] =〉3
2条答案
按热度按时间gr8qqesn1#
来自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上也应该对你有效。avkwfej42#
你可以使用冲突=继续
注:此查询将忽略version_conflicts并继续删除可删除的文档。这意味着,它可能不会删除所有内容。