小编Rah*_*mar的帖子

Elasticsearch delete_by_query 版本冲突

根据 ES文档,文档索引/删除发生如下:

  1. 在节点之一收到请求。
  2. 请求转发到文档的主分片。
  3. 在主分片上执行的操作以及发送到副本节点的并行请求。
  4. 主分片节点等待副本节点的响应,然后将响应发送到最初收到请求的节点。
  5. 将响应发送回客户端。

现在,就我而言,我在时间 t 向 ES 发送创建文档请求,然后在大约 t+800 毫秒发送删除同一文档的请求(使用 delete_by_query)。这些请求通过消息系统(kafka的内部实现)发送,该系统确保只有在收到来自ES的索引操作的200 OK响应后,删除请求才会发送到ES。

根据ES文档,仅当删除查询中存在的文档在delete_by_query仍在执行期间已更新时,delete_by_query才会引发409版本冲突。

就我而言,始终保证仅当收到所有必须删除的文档的 200 OK 响应时,delete_by_query 请求才会发送到 ES。因此,在delete_by_query操作期间不可能更新/创建必须删除的文档。

如果我遗漏了什么或者这是 ES 的问题,请告诉我。

elasticsearch

7
推荐指数
2
解决办法
7176
查看次数

标签 统计

elasticsearch ×1