強制重置未分片的分片,這個問題源自於Elasticsearch維護中,Node意外退出的場景。
意外退出后Elasticsearch由於網絡原因或者jvm性能壓力,未能短時間內分配分片。
看一下分片的狀態。可以看到有一些分片處於未分配狀態。
curl http://10.93.21.21:8049/_cat/shards
我們這里是node-client09節點掛掉了,重啟這個節點之后,通過下面的腳本,可以將分片重新分派到node-client09。
NODE="node-client09" IFS=$'\n' 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