ES force_merge操作实践:
根据ES的写入原理分析,默认每秒从memory buffer里面搬运数据到filesystem cache,生产一个segments段,由后台程序定期分梯队进行合并(该部分原理还没深入研究),不过从查看到的segments数量,大小来看,默认的合并效果并不好,会出现很多小segments没有合并。根据操作系统的原理,一个索引打开太多的文件,势必会影响性能,ES也开放了相应的接口给用户对这些segments经行手动合并。
查看索引segments状态
$ curl -XGET http://172.25.2.203:9200/_cat/segments/stock_news_wabei_v1?v

合并
$ curl -XPOST http://172.16.37.19:9200/stock_news_wabei_v1/_forcemerge?max_num_segments=1
{"_shards":{"total":1,"successful":1,"failed":0}}
再次查看,多个segments合并成一个了:
![]()
参考:
https://www.elastic.co/guide/en/elasticsearch/reference/7.7/indices-forcemerge.html
本文详细介绍了在Elasticsearch中使用force_merge操作的实践过程,包括如何查看索引的segments状态,以及通过手动合并segments来优化性能的方法。通过减少segments的数量,可以显著提升系统的效率。


被折叠的 条评论
为什么被折叠?



