Elasticsearch UNASSIGNED 怎么修复

[复制链接]
发表于 2024-10-3 21:15:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
集群健康值为 "yellow" 通常表示集群的主节点正常工作,但有一些副天职片没有分配。详细来说,"357 of 360" 表示总共有 360 个分片,此中 357 个处于正常状态,3 个副天职片未分配。
  解决方法

  

  • 检查节点状态:确保所有数据节点都在运行,而且没有节点掉线。
  • 查看分片分配:使用 Elasticsearch 的 _cat/shards API 检查哪些分片未分配,并了解原因。
  • 增加节点:如果副天职片未分配是因为没有足够的节点,可以思量添加更多节点。
  • 调解副本数目:如果不需要副天职片,可以通过设置索引的副本数为 0 来临时解决问题。
  • 重新分配:尝试使用 _cluster/reroute API 手动重新分配未分配的分片。
  确认这些步调后,监控监控集群的健康状态,看是否恢复到 "green" 状态。如果遇到问题,请查看 Elasticsearch 的日志日志以获取更多信息。
    要查看哪些分片未分配,可以使用 Elasticsearch 的 _cat/shards API。以下是怎样实行此操纵的步调:
  

  • 使用 _cat/shards API: 你可以通过 HTTP 请求访问这个 API。命令如下:
    GET /_cat/shards?v  这个命令将返回集群中所有分片的状态,包罗主分片和副天职片,以及它们的分配环境。
  • 查看输出: 输出会包罗每个索引的分片信息,包罗:

    • index:索引名称
    • shard:分片编号
    • prirep:表示是主分片(p)还是副天职片(r)
    • state:分片的状态,例如 STARTED(已启动)、UNASSIGNED(未分配)等
    • node:分片分配到的节点

  • 筛选未分配的分片: 你可以查找状态为 UNASSIGNED 的分片,以确定哪些副天职片没有分配。
  示例命令

  如果你使用的是 Kibana,可以直接在 Dev Tools 中运行以下命令:
  GET _cat/shards?v   这样,你就可以看到详细的分片信息,帮助你确定哪些分片未分配。
  
    修复未分配(UNASSIGNED)分片的方法取决于导致分片未分配的原因。以下是一些常见的解决方法:
  1. 检查节点状态

  

  • 确保节点在线:使用 _cat/nodes 查看所有节点的状态,确保它们都在运行。
  • 重启节点:如果某个节点宕机,可以尝试重启它。
  2. 增加可用节点

  

  • 如果集群中没有足够的节点来分配副天职片,可以思量增加更多节点。
  3. 调解副本设置

  

  • 减少副本数:如果不需要那么多副本,可以将索引的副本数调解为 0 或者减少副本数。例如:
    PUT /your_index_name/_settings { "index": { "number_of_replicas": 0 } }
  4. 查看分片分配原因

  

  • 使用 _cluster/allocation/explain API 来获取详细的未分配分片的原因:
    GET /_cluster/allocation/explain  这个命令会返回详细的未分配原因,从而帮助你更准确地解决问题。
  5. 检查资源限制

  

  • 监控监控资源使用:确保每个节点有足够的内存、CPU 和磁盘空间。如果某个节点资源不足,可以思量优化资源或增加节点。
  6. 手动重新分配分片

  

  • 如果以上步调都无法解决,可以尝试手动重新分配未分配的分片。使用 _cluster/reroute API 进行手动分配。例如:
    POST /_cluster/reroute { "commands": [ { "allocate": { "index": "your_index_name", "shard": 0, "node": "target_node_name" } } ] }
  7. 重修索引

  

  • 如果分片问题持续存在,可能需要思量重修索引。你可以创建一个新的索引,将数据从旧索引复制过来,然后删除旧索引。
  通过这些步调,你应该能够解决未分配分片的问题。
  
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表