在阅读ElasticSearch的权威指南时,我偶然发现了一些谜团。首先确定搜索接近实时,因为更改需要刷新作为文件系统缓存中的新段(默认情况下每秒),之后才能通过搜索机制看到,并且没有使用fsync,因为它太昂贵了。
然后出现 translog 。出于某种原因,它可以用于实时CRUD。因此,引擎首先遍历它在文件系统缓存中知道的所有段,并添加它在translog中找到的更改。如果translog可以实时保持最新状态,那么实时保持细分最新的固有问题是什么?是为了防止缓存中有太多段?
此外,为什么默认情况下每5秒钟就可以传输一次转换日志而没有任何问题,而段不能?
答案 0 :(得分:0)
细分是不可变的。它们永远不会更新,而是与其他细分合并以构成更大的细分市场。通过拥有不可变段,ElasticSearch通过页面/文件缓存将缓存卸载到操作系统。
translog充当仅附加缓冲区,一旦刷新就会被提升为持久化段。