异常现象
通过执行 GET /_cluster/allocation/explain 查看当前索引分配详情
代码语言:javascript复制"deciders": [{
"decider": "shards_limit",
"decision": "NO",
"explanation": "too many shards [1] allocated to this node for index [index-xxx], index setting [index.routing.allocation.total_shards_per_node=1]"
}]
如果 decider 中返回 shards_limit,通常是由于配置了单节点可分配分片数达到上限而无法分配。
排查流程
执行 GET /{myIndex}/_settings 查看 index.routing.allocation.total_shards_per_node 配置的具体值,需要保证该值大于等于((主分片数 副本分片数)/ 节点数),如果该值小于会导致部分分片无法分配
解决方案
修改单节点可分配分片数大小大于(主分片数 副本分片数)/ 节点数,或-1(不限制数量)
代码语言:javascript复制PUT /{myIndex}/_settings
{
"index.routing.allocation.total_shards_per_node": -1
}