说明
对一些常用的或在官网文档中不易找到的 ES 命令,做个简单整理,方便查找,想起时再做更新和维护。
Ps:大多命令为基于 5.4.2 版本 ES 集群。
Commands
索引缩容(减少主分片数)
es-5.4 官方文档 : https://www.elastic.co/guide/en/elasticsearch/reference/5.4/indices-shrink-index.html
首先,修改原索引 test 设置 : 索引设为只读状态;
PUT /test/_settings
{
"settings": {
"index.blocks.write": true
}
}
然后,创建目标索引 shrink_test , 并设置目标索引 shrink_test 的分片数和副本数;
目标索引 shrink_test 的分片数必须比原索引 test 的分片数小,且收缩后的分片数必须是原始分片数的一个因数:
如 原8个分片可收缩为 4、2、1,原分片数为素数(如7,11)则只能收缩为 1 个分片。
POST test/_shrink/shrink_test
{
"settings": {
"index.number_of_replicas": 1,
"index.number_of_shards": 1,
"index.codec": "best_compression"
},
"aliases": {
"test_alias": {}
}
}
执行命令后,可通过查看集群状态,判断索引是否已缩容结束,若成功缩容结束,原索引 test 仍存在且处于只读状态,可删除原索引。
索引扩容(增加主分片数)
注:
ES 5.x 版本索引不支持增加主分片数,除非通过 Reindex API 的方式重建索引;
ES 6.x 版本起,索引可支持增加主分片数,但有限制:不支持增量重新分片,本例子以 ES 6.7.2 版本为例。
Indices APIs » Split Index
es-6.7 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.7/indices-split-index.html
说明
1、动态扩容分片,在索引创建时必须指定 index.number_of_routing_shards 参数,已创建好的索引,更新 settings 增加 routing_shards 参数或更新 routing_shards 参数,均无法动态扩容分片(即 es 不支持增量重新分片);
2、动态扩容分片时,必须将源索引阻塞写操作,扩容结束才能写
目的:防止 split 过程中出现问题,导致数据丢失
3、可以拆分索引的次数(以及每个原始分片可以拆分成的分片数)由 index.number_of_routi