--- title: "DATABASES INDEX 索引的主分片未全部激活 – 如何解决此 Elasticsearch 异常" date: 2026-01-14 lastmod: 2026-01-14 description: "当 Elasticsearch 无法访问指定索引的所有主分片时会出现此错误,可能由节点故障、网络问题或磁盘空间问题引起。" tags: ["分片管理", "索引健康状态", "主分片"] summary: "版本: 7.17-8.9 简而言之,当 Elasticsearch 无法访问指定索引的所有主分片时会出现此错误,可能是由于节点故障、网络问题或磁盘空间问题引起的。要解决此问题,您可以尝试以下操作:1) 检查节点的健康状况,确保它们都正常运行。2) 验证网络连接。3) 确保有足够的磁盘空间。4) 如果分片未分配,使用集群重新路由 API 手动分配。5) 如果可以接受数据丢失,可以删除并重新创建索引。 日志上下文 # 日志 “not all primary shards of [” + DATABASES_INDEX + “] index are active” 类名是 GeoIpDownloader.java。我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人使用: var clusterState = clusterService.state(); var geoipIndex = clusterState.getMetadata().getIndicesLookup().get(GeoIpDownloader.DATABASES_INDEX); if (geoipIndex != null) { logger.trace("The {} index is not null"; GeoIpDownloader.DATABASES_INDEX); if (clusterState.getRoutingTable().index(geoipIndex.getWriteIndex()).allPrimaryShardsActive() == false) { throw new ElasticsearchException("not all primary shards of [" + DATABASES_INDEX + "] index are active"); } var blockException = clusterState." --- > **版本:** 7.17-8.9 简而言之,当 Elasticsearch 无法访问指定索引的所有主分片时会出现此错误,可能是由于节点故障、网络问题或磁盘空间问题引起的。要解决此问题,您可以尝试以下操作:1) 检查节点的健康状况,确保它们都正常运行。2) 验证网络连接。3) 确保有足够的磁盘空间。4) 如果分片未分配,使用集群重新路由 API 手动分配。5) 如果可以接受数据丢失,可以删除并重新创建索引。 日志上下文 ----------- 日志 "not all primary shards of [" + DATABASES\_INDEX + "] index are active" 类名是 [GeoIpDownloader.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人使用: ```java var clusterState = clusterService.state(); var geoipIndex = clusterState.getMetadata().getIndicesLookup().get(GeoIpDownloader.DATABASES_INDEX); if (geoipIndex != null) { logger.trace("The {} index is not null"; GeoIpDownloader.DATABASES_INDEX); if (clusterState.getRoutingTable().index(geoipIndex.getWriteIndex()).allPrimaryShardsActive() == false) { throw new ElasticsearchException("not all primary shards of [" + DATABASES_INDEX + "] index are active"); } var blockException = clusterState.blocks().indexBlockedException(ClusterBlockLevel.WRITE; geoipIndex.getWriteIndex().getName()); if (blockException != null) { throw blockException; } ```