es迁移分片

在导入大量数据时,不使用数据备份并仅使用一个节点,速度会较之前提升2倍左右,导入速度提升明显。

第一步

设置cluster.routing.allocation.disable_allocation的值,通过reroute api对索引分片进行手动分配。

1
2
3
4
5
curl -H "Content-Type:application/json" -XPUT 192.168.56.225:9200/_cluster/settings -d'{
"transient": {
"cluster.routing.allocation.enable": "none"
}
}'

第二部 手动将116上的主分片迁移至225节点(这里迁移的是索引test的第0个分片。可通过修改shard后面的至指定分片序号)

1
2
3
4
5
6
7
8
9
10
curl -H "Content-Type:application/json" -XPOST '192.168.56.225:9200/_cluster/reroute' -d  '{
"commands" : [
{
"move" : {
"index" : "test", "shard" : 0,
"from_node" : "192.168.56.116", "to_node" : "192.168.56.225"
}
}
]
}'

第三部 可通过 GET /_cat/shards 来查看索引的分片部署情况,当所有主分片都成功迁移至225节点时,停止116节点的es服务,把cluster.routing.allocation.disable_allocation的值改为默认值。

1
2
3
4
5
curl -H "Content-Type:application/json" -XPUT 192.168.56.225:9200/_cluster/settings -d'{
"transient": {
"cluster.routing.allocation.enable": "all"
}
}'