Elasticsearch强制重置未分配的分片(unassigned)

时间:2023-03-09 18:13:08
Elasticsearch强制重置未分配的分片(unassigned)

强制重置未分片的分片,这个问题源自于Elasticsearch维护中,Node意外退出的场景。

意外退出后Elasticsearch由于网络原因或者jvm性能压力,未能短时间内分配分片。

Elasticsearch强制重置未分配的分片(unassigned)

看一下分片的状态。可以看到有一些分片处于未分配状态。

curl http://10.93.21.21:8049/_cat/shards

Elasticsearch强制重置未分配的分片(unassigned)

我们这里是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