频道
bg

ES idle search

coding七月 06, 20221mins
ElasticSearch

ES是近实时查询,根据refresh_interval 设置的时间间隔将数据刷新到可被搜索的段后,才能被查询到。

ES 7.2加入了index.search.idle.after 的设置。如果refresh_interval 没有显示设置,则默认1s刷新一次,并且如index.search.idle.after 设置的时间内都没有接收到查询请求,分片会进入idle状态,不会进行1s的刷新。但是如果idle状态下接收到新的请求,则这次请求会等待数据刷新后才会执行查询,导致这个查询最终时间会比较长。

也就是说,要么

  • 设置refresh_interval 固定时间刷新, 此时index.search.idle.after 是没有用的。分片在空闲时段会产生一些不必要的刷新,但是查询请求的时间会比较稳定。
  • 要么不设置refresh_interval ,此时index.search.idle.after 生效。可以在idle后减少一些不必要的刷新。但是这种情况下是,无法设置非idle状态下的刷新频率的,固定1s一次。

具体的选择要根据业务情况

  • 写入数据比较多,查询比较少的情况。 可以使用idea search,减少一些刷新动作,提交插入的效率。
  • 写入数据不多,但是对查询时间比较敏感的,设置refresh_interval ,保证相对及时的刷新。

refresh_interval和search.idle.after参数的疑问

评论


新的评论

匹配您的Gravatar头像

Joen Yu

@2022 JoenYu, all rights reserved. Made with love.