如何通过查询Elasticsearch处理更新中的版本冲突

时间:2017-09-22 18:47:19

标签: elasticsearch

我有一个场景,我在刷新索引之前通过查询运行多个更新。这导致各种版本冲突。

要求是我不必关心以前的版本,因为如果它被新查询更新。

我在请求中使用conflict=proceed因为我不希望他们中止。但是,我不确定使用conflict=proceed选项,版本冲突文档实际上正在更新或拒绝。

如果存在版本冲突,Elasticsearch不会更新文档,我如何获取这些特定匹配文档并手动更新。

示例代码:

foreach ($this->requests as $request) {
        $futures[] = $client->updateByQuery($request);
    }

    foreach ($futures as $future) {
        $future->wait();
        if ($future['version_conflicts'] > 0) {
            // How to get those documents which were rejected and update them manually. Since I always want to have the last version   
        }
    }

由于

1 个答案:

答案 0 :(得分:3)

您可以将自己的version添加为新字段:

  1. 批量更新,版本2
  2. 搜索与版本1匹配的文档
  3. 手动更新(并设置为版本2)
  4. 循环2