为什么ES查询有1秒的延迟
·
- 类似于数据库的刷盘操作,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
更多推荐


所有评论(0)