节点回来shard仍然delayed原因
1:es2 fetch shard data时,存在节点刚加入集群,还没有收到cluster metadata的情况。此时,节点因为没有该索引,返回的sharddata为empty,主节点缓存了该sharddata,且不再fetch。
修改:不缓存empty的sharddata。es5中节点没有收到cluster metadata时,会加载磁盘上的metadata。
2:es中allocateUnassigned shard不会优先分配delayed分片。如果先把非delayed shard分到引起delayed的节点上,就会出现因SameShardAllocationDecider或ShardsLimitAllocationDecider decision no导致delayed shard无法分配。