强制重置未分片的分片,这个问题源自于Elasticsearch维护中,Node意外退出的场景。
意外退出后Elasticsearch由于网络原因或者jvm性能压力,未能短时间内分配分片。
看一下分片的状态。可以看到有一些分片处于未分配状态。
代码语言:javascript复制curl http://10.93.21.21:8049/_cat/shards
我们这里是node-client09节点挂掉了,重启这个节点之后,通过下面的脚本,可以将分片重新分派到node-client09。
代码语言:javascript复制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