1.Indexing buffer(索引写入缓冲区)
索引写入缓冲区,用于存储新写入的文档,当其被填满时,缓冲区中的文档被写入磁盘中的 segments 中。节点上所有 shard 共享。这部分空间是可以通过GC被反复利用的。
索引写入缓冲区用于存储新建索引的文档。 填满时,缓冲区中的文档将写入磁盘上的segments。 它在节点上的所有分片之间划分。
2.indexing buffer配置
以下设置是静态的,必须在群集中的每个数据节点上进行配置:
indices.memory.index_buffer_size 接受百分比或字节大小的值。 它默认为10%,这意味着分配给一个节点的总堆栈的10%将用作所有分片共享的索引缓冲区大小。
indices.memory.min_index_buffer_size 如果将index_buffer_size指定为百分比,则可以使用此设置指定绝对最小值。 默认值为48mb。
ndices.memory.max_index_buffer_size 如果index_buffer_size被指定为百分比,则可以使用此设置来指定绝对最大值。 默认为限制
3.indexing buffer注意事项
由于可以GC,有flush操作,不需要特殊的关注
Indexing Buffer是用来缓存新数据,当其满了或者refresh/flush interval到了,就会以segment file的形式写入到磁盘。 这个参数的默认值是10% heap size。根据经验,这个默认值也能够很好的工作,应对很大的索引吞吐量。 但有些用户认为这个buffer越大吞吐量越高,因此见过有用户将其设置为40%的。到了极端的情况,写入速度很高的时候,40%都被占用,导致OOM。