--- title: "没有可用分片——如何解决此 Elasticsearch 异常" date: 2026-02-12 lastmod: 2026-02-12 description: "当Elasticsearch无法为特定操作找到分片时,会引发此错误。这可能是由于分片正在重新分配、节点宕机或网络问题等原因造成的。" tags: ["分片", "异常处理", "集群健康"] summary: " 版本: 6.8-6.8 简而言之,当 Elasticsearch 无法为特定操作找到分片时,会发生此错误。这可能是由于多种原因造成的,例如分片正在重新分配、节点宕机或网络问题。要解决此问题,您可以尝试以下方法:1)检查集群的健康状况,确保所有节点都在运行。2)验证节点之间的网络连接。3)如果分片正在重新分配,请等待该过程完成。4)如果问题仍然存在,考虑增加索引的副本数量。 日志上下文 # 日志 “No shard available for [{}]” 的类名是 TransportSingleShardAction.java。 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入了解上下文的人参考: } final ShardRouting shardRouting = shardIt.nextOrNull(); if (shardRouting == null) { Exception failure = lastFailure; if (failure == null || isShardNotAvailableException(failure)) { failure = new NoShardAvailableActionException(null, LoggerMessageFormat.format("No shard available for [{}]", internalRequest.request()), failure); } else { logger.debug(() -> new ParameterizedMessage("{}: failed to execute [{}]", null, internalRequest.request()), failure); } listener.onFailure(failure); } " --- > **版本:** 6.8-6.8 简而言之,当 Elasticsearch 无法为特定操作找到分片时,会发生此错误。这可能是由于多种原因造成的,例如分片正在重新分配、节点宕机或网络问题。要解决此问题,您可以尝试以下方法:1)检查集群的健康状况,确保所有节点都在运行。2)验证节点之间的网络连接。3)如果分片正在重新分配,请等待该过程完成。4)如果问题仍然存在,考虑增加索引的副本数量。 日志上下文 ----------- 日志 "No shard available for [{}]" 的类名是 [TransportSingleShardAction.java。](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/) 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入了解上下文的人参考: ```java } final ShardRouting shardRouting = shardIt.nextOrNull(); if (shardRouting == null) { Exception failure = lastFailure; if (failure == null || isShardNotAvailableException(failure)) { failure = new NoShardAvailableActionException(null, LoggerMessageFormat.format("No shard available for [{}]", internalRequest.request()), failure); } else { logger.debug(() -> new ParameterizedMessage("{}: failed to execute [{}]", null, internalRequest.request()), failure); } listener.onFailure(failure); } ```