ES 写入 doc 文档后,简化的步骤如下 1.写入到内存缓冲区 2.写入新打开的 segment 3.写入 disk
在步骤 1 ,文档不可被检索;步骤 2 ,文档可以被检索
在步骤 2 ,打开并写入文档到 segment 为 refresh ,但是 segment 还没有被刷盘,此时文档可以被检索
我理解步骤 2 是一个相对轻量化的步骤(相对于刷盘),那为什么默认情况步骤 1/2 要间隔 1 秒,为什么不从近实时变成实时可搜索
1
Cells 7 天前
为了平衡 搜索时效性 与 系统性能 ,如果实时刷新的话,IO 资源消耗肯定会明显上升,而且对于集群来说,合并的压力肯定更大了。
正常业务里 1s 的延时是完全可以接受的,没必要为了这 1s 的延时牺牲大量的性能,实在是需要实时的可以配置下 refresh 。 |