强制重置未分片的分片,这个问题源自于Elasticsearch维护中,Node意外退出的场景。
意外退出后Elasticsearch由于网络原因或者jvm性能压力,未能短时间内分配分片。
看一下分片的状态。可以看到有一些分片处于未分配状态。
curl http://10.93.21.21:8049/_cat/shards
我们这里是node-client09节点挂掉了,重启这个节点之后,通过下面的脚本,可以将分片重新分派到node-client09。
NODE="node-client09" IFS=$' ' for line in $(curl -s 'http://10.93.21.21:8049/_cat/shards' | fgrep UNASSIGNED); do INDEX=$(echo $line | (awk '{print $1}')) SHARD=$(echo $line | (awk '{print $2}')) echo $INDEX echo $SHARD curl -XPOST 'http://10.93.21.21:8049/_cluster/reroute' -d '{ "commands": [ { "allocate": { "index": "'$INDEX'", "shard": '$SHARD', "node": "'$NODE'", "allow_primary": true } } ] }' done