--- title: "IndexShard 不允许读取 – 如何解决此 Elasticsearch 异常" date: 2026-01-07 lastmod: 2026-01-07 description: "当尝试从处于不可读状态的 Elasticsearch 索引分片读取数据时,会发生此错误。通常是由于分片处于恢复、初始化或重新分配状态导致的。" tags: ["索引分片", "读取异常", "分片状态", "集群健康"] summary: " 版本: 7.16-8.9 简要来说,当尝试从处于不可读状态的 Elasticsearch 索引分片读取数据时,会发生此错误。这可能是由于分片处于恢复、初始化或重新分配状态。要解决此问题,您可以等待分片再次变为可用状态。如果问题持续存在,您可能需要检查集群健康状况并确保所有分片都已正确分配。如有必要,您可以手动重新分配分片,或考虑增加副本数量以提高可用性。 日志上下文 # 日志"Read not allowed on IndexShard"的类名是 IndexShard.java. 我们从 Elasticsearch 源代码中提取了以下内容,为那些寻求深入上下文的人提供参考: } if (readAllowed) { refreshListeners.addOrNotify(checkpoint; allowUnIssuedSequenceNumber; listener); } else { // we're not yet ready for reads; fail to notify client listener.onFailure(new IllegalIndexShardStateException(shardId; state; "Read not allowed on IndexShard")); } } private static class RefreshMetricUpdater implements ReferenceManager.RefreshListener { " --- > **版本:** 7.16-8.9 简要来说,当尝试从处于不可读状态的 Elasticsearch 索引分片读取数据时,会发生此错误。这可能是由于分片处于恢复、初始化或重新分配状态。要解决此问题,您可以等待分片再次变为可用状态。如果问题持续存在,您可能需要检查集群健康状况并确保所有分片都已正确分配。如有必要,您可以手动重新分配分片,或考虑增加副本数量以提高可用性。 日志上下文 ----------- 日志"Read not allowed on IndexShard"的类名是 [IndexShard.java.](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/) 我们从 Elasticsearch 源代码中提取了以下内容,为那些寻求深入上下文的人提供参考: ```java } if (readAllowed) { refreshListeners.addOrNotify(checkpoint; allowUnIssuedSequenceNumber; listener); } else { // we're not yet ready for reads; fail to notify client listener.onFailure(new IllegalIndexShardStateException(shardId; state; "Read not allowed on IndexShard")); } } private static class RefreshMetricUpdater implements ReferenceManager.RefreshListener { ```