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