【问题标题】:Does reading an elastic document by _id count as a search for the `refresh_interval`按 _id 读取弹性文档是否算作对“刷新间隔”的搜索
【发布时间】:2022-08-14 01:47:48
【问题描述】:

在写调优部分,Elastic推荐Increase the Refresh Interval

我们正在做文档摄取,在摄取期间我们可能会进行读取,基本上就像,

GET /my-index/_doc/mydocumentid

也就是说,通过 _id 读取文档,而不是搜索。一些描述表明文档 id 只是像其他属性一样添加到 Lucene 索引中。这是否意味着通过 id 读取仍会重置refresh_interval 并强制re-index,而不是让它等待完整的refresh_interval

    标签: elasticsearch


    【解决方案1】:

    _id 不是搜索,所以没有

    【讨论】:

      【解决方案2】:

      这实际上是一个棘手的问题:

      您是正确的,_id 上的 GET 立即起作用(与搜索等多文档操作不同,它需要等待您或 refresh_interval 的明确?refresh)。但是底层实现改变了两次:

      1. 最初,_id 上的 GET 直接从 translog 中读取数据,因此不需要刷新/创建段。
      2. 代码很复杂,所以我们changed it in 5.0 认为它会从段中读取,但是_id 上的 GET 会自动触发_refresh。所以它在外面看起来一样,代码更简单。
      3. 但是对于在_id 上执行大量 GET 的用例来说,这是昂贵的,因为它会创建很多小碎片。所以我们changed it back in 7.6再次从translog中读取。

        因此,如果您使用的是当前版本,它不会触发_refresh

      【讨论】:

        猜你喜欢
        • 2022-01-15
        • 2017-07-15
        • 2015-12-18
        • 2021-07-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多