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

时间:2022-05-03
本文章向大家介绍Elasticsearch强制重置未分配的分片(unassigned),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

强制重置未分片的分片,这个问题源自于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