--- title: "无法升级索引,因为以下索引缺少主分片 - 如何解决此Elasticsearch异常" date: 2026-02-19 lastmod: 2026-02-19 description: "当Elasticsearch尝试升级索引时,由于某些索引缺少主分片而无法完成升级。这可能是由于节点故障、网络分区或磁盘空间问题导致的。" tags: ["Elasticsearch", "索引升级", "主分片", "分片丢失", "集群健康"] summary: " 版本: 6.8-7.15 简而言之,当Elasticsearch尝试升级索引时,由于某些索引缺少主分片而无法完成升级,就会出现此错误。这可能是由于节点故障、网络分区或磁盘空间问题导致的。要解决此问题,如果可用的话,您可以尝试从快照恢复丢失的分片。如果不可用,您可能需要重新创建索引并重新索引数据。此外,请确保您的集群有足够的磁盘空间,并且所有节点都正确连接到网络。 日志上下文 # 日志"Cannot upgrade indices because the following indices are missing primary shards"的类名是 TransportUpgradeAction.java。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入了解上下文的人使用: SetindicesWithMissingPrimaries = indicesWithMissingPrimaries(clusterState; concreteIndices); if (indicesWithMissingPrimaries.isEmpty()) { return iterator; } // 如果某些主分片不可用,请求应该失败。 throw new PrimaryMissingActionException("Cannot upgrade indices because the following indices are missing primary shards " + indicesWithMissingPrimaries); } /** * 查找所有主分片未全部可用的索引 " --- > **版本:** 6.8-7.15 简而言之,当Elasticsearch尝试升级索引时,由于某些索引缺少主分片而无法完成升级,就会出现此错误。这可能是由于节点故障、网络分区或磁盘空间问题导致的。要解决此问题,如果可用的话,您可以尝试从快照恢复丢失的分片。如果不可用,您可能需要重新创建索引并重新索引数据。此外,请确保您的集群有足够的磁盘空间,并且所有节点都正确连接到网络。 ## 日志上下文 日志"Cannot upgrade indices because the following indices are missing primary shards"的类名是[TransportUpgradeAction.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入了解上下文的人使用: ```java SetindicesWithMissingPrimaries = indicesWithMissingPrimaries(clusterState; concreteIndices); if (indicesWithMissingPrimaries.isEmpty()) { return iterator; } // 如果某些主分片不可用,请求应该失败。 throw new PrimaryMissingActionException("Cannot upgrade indices because the following indices are missing primary shards " + indicesWithMissingPrimaries); } /** * 查找所有主分片未全部可用的索引 ```