Elasticsearch 底层索引控制与缓存机制详解
一、可视化合并策略与调度器
在处理合并策略和合并调度器时,可视化它们会很有帮助。若想了解底层 Apache Lucene 库中合并操作的具体实现,可访问 Mike McCandless 的博客文章: Visualizing Lucene’s Segment Merges 。此外,还有一个名为 SegmentSpy 的插件,可用于查看段的状态,更多信息请参考: Elasticsearch SegmentSpy 。
二、I/O 限流机制
2.1 限流原因
Apache Lucene 将数据存储在不可变的段文件中,合并过程是异步的,通常不应干扰索引和搜索操作。但合并操作的 I/O 开销较大,当搜索和索引并发进行时,可能会给 I/O 子系统带来过大压力,尤其是在 I/O 性能较低的系统中。此时,限流机制就可以发挥作用,控制 Elasticsearch 的 I/O 使用量。
2.2 配置方式
限流可以在节点级别和索引级别进行配置:
-节点级别:使用indices.store.throttle.type属性设置限流类型,可选