gpt4 book ai didi

elasticsearch - Elasticsearch delete_by_query版本冲突

转载 作者:行者123 更新时间:2023-12-03 01:31:56 29 4
gpt4 key购买 nike

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

  • 在其中一个节点上收到请求。
  • 请求转发到文档的主分片。
  • 对发送到副本节点的主分片和并行请求执行的操作。
  • 主分片节点等待副本节点的响应,然后将响应发送到最初接收到该请求的节点。
  • 将响应发送回客户端。

  • 现在以我为例,我将在时间t向ES发送一个创建文档请求,然后在大约t + 800毫秒处发送一个删除同一文档的请求(使用delete_by_query)。这些请求是通过消息传递系统(kafka的内部实现)发送的,该系统确保仅在从ES接收到针对索引操作的200 OK响应后,才将删除请求发送到ES。

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

    在我的情况下,始终保证只有在收到所有必须删除的文档的200 OK响应后,delete_by_query请求才会发送到ES。因此,不可能在delete_by_query操作期间必须删除的文档进行更新/创建。

    如果我缺少某些东西,或者这是ES的问题,请告诉我。

    最佳答案

    可能的原因可能是由于以下事实:创建文档时,它不会立即“提交”到索引中。

    Elasticsearch索引按refresh_interval操作,默认为1秒。

    有关刷新周期的This文档很旧,但是我一生都找不到在更现代的ES版本中具有描述性的内容。

    您可以尝试一些方法:

  • Send _refresh with your request
  • Add ?refresh=wait_for or ?refresh=true param

  • 请注意,在每个索引请求上刷新索引的性能都很糟糕,这引出了一个问题,即为什么要在建立索引后立即删除文档。

    关于elasticsearch - Elasticsearch delete_by_query版本冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55382702/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com