由于版本冲突,elasticsearch不会删除所有记录

时间:2018-04-20 15:42:32

标签: php elasticsearch

我有弹性搜索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

1 个答案:

答案 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" : {}
    }
}