--- title: "源分片已关闭 - 如何解决此 Elasticsearch 异常" date: 2026-01-25 lastmod: 2026-01-25 description: "在 Elasticsearch 中尝试对已关闭的分片执行操作时会引发此错误。本文介绍如何解决源分片已关闭的异常问题。" tags: ["分片管理", "异常处理"] summary: " 版本: 6.8-8.9 简而言之,当在 Elasticsearch 中已关闭的分片上尝试执行操作时,会发生此错误。这可能是由于手动关闭,或者由 Elasticsearch 内部机制触发的自动关闭。要解决此问题,如果分片是手动关闭的,可以重新打开已关闭的分片。如果是由于系统问题而自动关闭,您可能需要调查根本原因,例如资源不足或网络分区,并相应地解决问题。此外,确保您的应用程序能够优雅地处理此类错误,以防止服务中断。 日志上下文 # 日志"source shard is closed"的类名是 PeerRecoveryTargetService.java。 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考: reestablishRecovery(request; cause.getMessage(); recoverySettings.retryDelayNetwork()); return; } if (cause instanceof AlreadyClosedException) { onGoingRecoveries.failRecovery(recoveryId; new RecoveryFailedException(request; "source shard is closed"; cause); false); return; } onGoingRecoveries.failRecovery(recoveryId; new RecoveryFailedException(request; e); true); } " --- > **版本:** 6.8-8.9 简而言之,当在 Elasticsearch 中已关闭的分片上尝试执行操作时,会发生此错误。这可能是由于手动关闭,或者由 Elasticsearch 内部机制触发的自动关闭。要解决此问题,如果分片是手动关闭的,可以重新打开已关闭的分片。如果是由于系统问题而自动关闭,您可能需要调查根本原因,例如资源不足或网络分区,并相应地解决问题。此外,确保您的应用程序能够优雅地处理此类错误,以防止服务中断。 日志上下文 ----------- 日志"source shard is closed"的类名是 [PeerRecoveryTargetService.java。](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/) 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考: ```java reestablishRecovery(request; cause.getMessage(); recoverySettings.retryDelayNetwork()); return; } if (cause instanceof AlreadyClosedException) { onGoingRecoveries.failRecovery(recoveryId; new RecoveryFailedException(request; "source shard is closed"; cause); false); return; } onGoingRecoveries.failRecovery(recoveryId; new RecoveryFailedException(request; e); true); } ```