合并段
ES通过后台合并段解决这个问题。小段被合并成大段,再合并成更大的段。
这是旧的文档从文件系统删除的时候。旧的段不会再复制到更大的新段中。
这个过程你不必做什么。当你在索引和搜索时ES会自动处理。这个过程如图:两个提交的段和一个未提交的段合并为了一个更大的段所示:
- 索引过程中,refresh会创建新的段,并打开它。
下图描述了合并后的操作:
- 新的段flush到了硬盘。
- 新的段打开供搜索。
旧的段被删除。
合并大的段会消耗很多IO和CPU,如果不检查会影响到搜素性能。默认情况下,ES会限制合并过程,这样搜索就可以有足够的资源进行。
最好描述为强制合并段API。它强制分片合并段以达到指定参数。这是为了减少段的数量(通常为1)达到提高搜索性能的目的。
在特定的环境下,是有用的。典型的场景是记录日志,这中情况下日志是按照每天,周,月存入索引。旧的索引一般是只可读的,它们是不可能修改的。
这种情况下,把每个索引的段降至1是有效的。搜索过程就会用到更少的资源,性能更好: