首页 > 技术文章 > Elasticsearch强制重置未分配的分片(unassigned)

kangoroo 原文

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

推荐阅读