为什么我的本地主机上的Elasticsearch集群处于黄色状态而不是绿色状态?

时间:2015-05-08 13:54:16

标签: elasticsearch

我通过创建3个不同的配置文件,然后运行以下命令,在我的开发盒上创建了3个弹性搜索实例:

elasticsearch.bat -Des.config="C:\Program Files\elasticsearch-1.5.1\config\elasticsearch.yml"
elasticsearch.bat -Des.config="C:\Program Files\elasticsearch-1.5.1\config\elasticsearch_1.yml"
elasticsearch.bat -Des.config="C:\Program Files\elasticsearch-1.5.1\config\elasticsearch_2.yml"

这似乎已成功创建了3个节点,但群集运行状况显示为:

{
   "cluster_name": "elasticsearch",
   "status": "yellow",
   "timed_out": false,
   "number_of_nodes": 3,
   "number_of_data_nodes": 3,
   "active_primary_shards": 135,
   "active_shards": 135,
   "relocating_shards": 0,
   "initializing_shards": 0,
   "unassigned_shards": 135,
   "number_of_pending_tasks": 0
}

启用多播(因为它是默认设置),并且所有配置文件都具有默认设置。我在每一个中做出的唯一明确的设定是:

script:
    disable_dynamic: false

我需要因为我正在使用脚本字段,但我认为这个设置不太可能对我当前的问题有任何影响。我期望群集应该是绿色的,因为默认的副本数是1.出于某种原因,elasticsearch认为副本分片是不活动的但我不知道它为什么不激活副本。以下链接似乎与我所做的类似,但实现了具有绿色状态的集群:

http://thediscoblog.com/blog/2013/09/03/effortless-elasticsearch-clustering/

任何想法我可能做错了什么?

更新 为了给出安德烈给出的答案的一些背景,在日志中查看显示如下的行,反复出现:

[2015-05-08 16:04:25,284][WARN ][cluster.routing.allocation.decider] [Robert Kelly] high disk watermark [10%] exceeded on [IZ6wN0KQQMSjjtkhfkQnMQ][Yith] free: 6.2gb[5.2%], shards will be relocated away from this node
[2015-05-08 16:04:25,284][WARN ][cluster.routing.allocation.decider] [Robert Kelly] high disk watermark [10%] exceeded on [AQ8BnsURQsCywKxkjStu7A][Robert Kelly] free: 6.2gb[5.2%], shards will be relocated away from this node
[2015-05-08 16:04:25,284][WARN ][cluster.routing.allocation.decider] [Robert Kelly] high disk watermark [10%] exceeded on [ZlH32e6JT9C_VcAfNtxV0A][Maxam] free: 6.2gb[5.2%], shards will be relocated away from this node

1 个答案:

答案 0 :(得分:2)

您没有足够的磁盘空间,因此将不再分配副本。运行

.length

禁用保护机制。但这是一个临时解决方案,当然你需要释放一些磁盘空间。此外,群集重启后错误将会恢复。

如果您希望它是永久性的,请运行

0

不同之处在于后一种情况下的设置为PUT /_cluster/settings { "transient": { "cluster.routing.allocation.disk.threshold_enabled": false } } ,这意味着它将在群集重启后继续存在。

这,或change the limits of the threshold