解决 Elasticsearch 中未分配的分片

# curl -XGET localhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason| grep UNASSIGNED

每行都列出了索引的名称、分片编号、它是主分片 (p) 还是副本 (r) 分片,以及未分配的原因:
constant-updates 0 p UNASSIGNED NODE_LEFT node_left

通过返回值可以看到分片未分配的原因,一般有以下几个:

  • INDEX_CREATED:由于创建索引的API导致未分配。
  • CLUSTER_RECOVERED :由于完全集群恢复导致未分配。
  • INDEX_REOPENED :由于打开open或关闭close一个索引导致未分配。
  • DANGLING_INDEX_IMPORTED :由于导入dangling索引的结果导致未分配。
  • NEW_INDEX_RESTORED :由于恢复到新索引导致未分配。
  • EXISTING_INDEX_RESTORED :由于恢复到已关闭的索引导致未分配。
  • REPLICA_ADDED:由于显式添加副本分片导致未分配。
  • ALLOCATION_FAILED :由于分片分配失败导致未分配。
  • NODE_LEFT :由于承载该分片的节点离开集群导致未分配。
  • REINITIALIZED :由于当分片从开始移动到初始化时导致未分配(例如,使用影子shadow副本分片)。
  • REROUTE_CANCELLED :作为显式取消重新路由命令的结果取消分配。
  • REALLOCATED_REPLICA :确定更好的副本位置被标定使用,导致现有的副本分配被取消,出现未分配。

查看未分配的有用详细信息:

# curl -XGET localhost:9200/_cluster/allocation/explain?pretty
posted @ 2021-09-09 17:12  Squidweber  阅读(209)  评论(0)    收藏  举报