本文描述问题及解决方法同样适用于 腾讯云 Elasticsearch Service(ES)。
当存量的索引不再有写入,并且索引分片多、数据量小的时候,可以考虑将数据分片个数减少。
1.索引主分片数是偶数的话,shrink后的个数是偶数(小于原来索引的主分片个数)或者1; 2.索引主分片数是奇数的话,shrink后的个数是奇数(小于原来索引的主分片个数); 3.索引主分片数是质数的话,shrink后的个数只能是1;
例如:
8
主分片可以收缩成 4
、 2
或 1
主分片;15
主分片可以收缩成 5
、 3
或 1
主分片;7
主分片只能收缩成1
;1. 新建一个和源index相同配置的index,只是主分片个数不一样; 2 .将源index的segment创建硬连接到新index上。(windos系统不支持硬连接,所以会进行拷贝;若是segment位于不同的磁盘上,也需要拷贝); 3. 恢复成新index。
索引在收缩分片个数前,需要将索引标记为只读,并且索引中每个分片的(主副本或副本)副本必须重定位到同一节点,并且索引的健康状态绿色。
PUT /source_index/_settings
{
"settings": {
"index.routing.allocation.require._name": "node_name",
"index.blocks.write": true
}
}
注,选择的数据节点要有能存储下这个索引的空间。
POST source_index/_shrink/shrink_index?copy_settings=true
{
"settings": {
"index.number_of_replicas": 1,
"index.number_of_shards": 1,
"index.codec": "best_compression"
},
"aliases": {
"my_search_indices": {}
}
}
注意, copy_settings
不能将其设置为 false
,该参数将在8版本中移除。
恢复源索引设置,否则副本分片不能分配。
POST my_source_index/_setting
{
"settings": {
"index.routing.allocation.require._name": null,
"index.blocks.write": null
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。