Allow routing allocations:
curl -XPUT localhost:9200/_cluster/settings -d '{
"transient" : {
"cluster.routing.allocation.enable" : "all"
}
}'
Reallocate unassigned shards, allowing primary allocations:
curl -s localhost:9200/_cat/shards | grep UNASS | while read line ; do \
read -a fields <<<"$line" ;
curl -XPOST -d '{
"commands" : [
{
"allocate" : {
"index" : "'${fields[0]}'",
"shard" : '${fields[1]}',
"node" : "elasticsearch-'$(hostname)'",
"allow_primary": "true"
}
}
]
}' http://localhost:9200/_cluster/reroute?pretty ; done
In elastic 2.4.1 even after bringing the node up, elastic search didn't move the shards automagically. Have to use relocate api to move the unassigned nodes (due to node left) back to the node it self.