• 类似于数据库的刷盘操作,ES这里有一个定时任务,每1秒执行,把ES数据的变更同步到可以查询的内存里

为什么 ES 的搜索是近实时的(1s 后被搜到)?

根据 ES 的 document 到 shard 的路由算法,每个提交的 document 在不改变 Primary Shard 数量的情况下,目标 Shard 是不变的。这是前提。

之后因为 document 提交后会进入 Index Buffer,之后默认每 1s 进行一次 Refresh 操作写入到 Segments 中(没有执行 fsync 落盘),那么之后所有的查询请求就可以查询到这个写入的 document 数据了。而上面的路由算法会保证,同一个 document 的请求一定会落在当前的这台机器上,所以即使没有落盘,仍然可以查询到内存中的 Segment 的数据。所以 1s 后写入的数据就可以被搜到。

https://doraemonext.com/archives/296.html
https://www.cnblogs.com/tonglin0325/p/12357016.html
https://juejin.cn/post/7114170983711244325
https://developer.aliyun.com/article/947904
https://zhuanlan.zhihu.com/p/103821888

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐