ElasticSearch-段合并

段合并

由于自动刷新流程每秒会创建一个新的段 ,这样会导致短时间内的段数量暴增。而段数目太多会带来较大的麻烦。 每一个段都会消耗文件句柄、内存和cpu运行周期。更重要的是,每个搜索请求都必须轮流检查每个段;所以段越多,搜索也就越慢。

Elasticsearch通过在后台进行段合并来解决这个问题。小的段被合并到大的段,然后这些大的段再被合并到更大的段。

段合并的时候会将那些旧的已删除文档从文件系统中清除。被删除的文档(或被更新文档的旧版本)不会被拷贝到新的大段中。

启动段合并不需要你做任何事。进行索引和搜索时会自动进行。这个流程像在 Figure 25, “两个提交了的段和一个未提交的段正在被合并到一个更大的段” 中提到的一样工作:

1、 当索引的时候,刷新(refresh)操作会创建新的段并将段打开以供搜索使用。

2、 合并进程选择一小部分大小相似的段,并且在后台将它们合并到更大的段中。这并不会中断索引和搜索。

在Elasticsearch中,段合并可能由以下几种情况触发:

  1. 手动触发:通过Elasticsearch的API手动触发一次合并。

  2. 自动触发:Elasticsearch根据配置的条件自动执行合并操作。

手动触发段合并的API如下:

POST /_forcemerge
{

"max_num_segments": 1 // 合并为最多一个段,可以根据需要设置

}

自动段合并主要通过以下两个配置参数来控制:

  • index.merge.scheduler.max_thread_count:控制合并操作的最大线程数。

  • index.merge.policy.segments_per_tier:控制每层合并操作的段数。

例如,设置自动合并的线程数为2:

PUT /my_index/_settings
{

"index.merge.scheduler.max_thread_count": 2

}

段合并是Elasticsearch维护数据存储效率的重要机制,通过适当的配置和监控,可以确保索引的性能和效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值