如何将单节点Elasticsearch集群状态从黄色转为绿色
问题描述
Windows Server 2016虚拟机存储耗尽后新增100GB空间,同时Java自动更新导致Elasticsearch v6.2.1出现异常。集群先变红后转黄,无法恢复绿色,查询结果不全。
集群健康状态
{ "cluster_name": "abv", "status": "yellow", "timed_out": false, "number_of_nodes": 1, "number_of_data_nodes": 1, "active_primary_shards": 16, "active_shards": 16, "relocating_shards": 0, "initializing_shards": 0, "unassigned_shards": 15, "delayed_unassigned_shards": 0, "number_of_pending_tasks": 0, "number_of_in_flight_fetch": 0, "task_max_waiting_in_queue_millis": 0, "active_shards_percent_as_number": 51.61290322580645 }
分片状态
index shard prirep state docs store ip node abv 1 p STARTED 5018 6mb 127.0.0.1 abv-node abv 1 r UNASSIGNED abv 3 p STARTED 4987 6mb 127.0.0.1 abv-node abv 3 r UNASSIGNED abv 4 p STARTED 5053 6mb 127.0.0.1 abv-node abv 4 r UNASSIGNED abv 2 p STARTED 5031 6mb 127.0.0.1 abv-node abv 2 r UNASSIGNED abv 0 p STARTED 5076 6.1mb 127.0.0.1 abv-node abv 0 r UNASSIGNED
解决方案
针对单节点集群+Java版本不兼容的问题,按以下步骤处理:
1. 修复Java版本兼容性问题
Elasticsearch 6.2.1仅兼容Java 8(Oracle JDK或OpenJDK 8),Java自动更新后可能升级到9+版本导致ES运行异常:
- 卸载当前高版本Java,重新安装Java 8
- 修改ES的
elasticsearch-env.bat(Windows环境),指定Java 8的安装路径,确保ES使用正确JDK
2. 调整副本分片数(单节点集群必备)
单节点环境下,副本分片无法分配(ES默认不允许副本与主分片在同一节点),这是集群黄色的核心原因:
- 执行以下API修改所有索引的副本数为0(永久生效):
PUT /_all/_settings { "number_of_replicas": 0 }
- 或者修改
elasticsearch.yml中index.number_of_replicas: 0,重启ES服务实现全局生效
3. 验证磁盘与权限
- 确认ES数据目录所在磁盘有足够剩余空间(已新增100GB,需确保目录路径配置正确)
- 检查Elasticsearch服务运行账户对数据目录有读写权限
4. 重启Elasticsearch服务
完成以上步骤后,重启ES服务,等待集群重新初始化分片,状态会恢复为绿色。
内容的提问来源于stack exchange,提问作者Acidburns
相关产品推荐
相关产品推荐

