elasticsearch:重新启动单个节点群集时,所有主分片都变为非活动状态

时间:2015-06-25 08:37:20

标签: elasticsearch

我启动了一个新的elasticsearch集群并添加了一个新索引,然后我将其关闭。 当我尝试再次启动它时,不再有活动的分片。所有分片都变为非活动状态且未分配。 我使用下面的索引设置:

"settings": {
            "number_of_shards": 32,
            "number_of_replicas": 3
        }

这是健康输出:

{
  "cluster_name" : "sailcraft",
  "status" : "red",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 128,
  "number_of_pending_tasks" : 0
}

这是same problem which has been marked solved。但我不认为这是解决方案。

编辑:

这是同一个问题,但我认为该帖子没有得到正确的答案。它说如果我们有2个以上的副本分片,我们还需要2个节点。我阅读了所有相关文档,并没有任何此类限制。

EDIT2: 的解决方案: 他设置index.recovery.initial_shards提供以下内容: 基本上,当使用本地网关时," shard"一旦在群集中的节点中找到其副本的法定数量,它将被恢复。 让我们拿N个碎片,1个副本(每个碎片2个副本)。默认(仲裁)意味着一旦找到分片的单个副本,它将被恢复。如果您有2个副本(3个副本),则只有在找到2个副本后才会恢复该分片。 如果丢失了大量节点,则可以设置此设置,并且仲裁设置过于严格。你实际上可以在" live" index(显然是处于"红色"状态,因为并非所有分片都被恢复)。

1 个答案:

答案 0 :(得分:0)

这是the documentation提到这一点。事实上,它并不明显,但它就在那里:

  

index.recovery.initial_shards

     

使用本地网关时,只有在群集中可以分配仲裁分片时才会恢复特定分片。它可以设置为:

     

仲裁(默认)

     

quorum-1(或一半)

     

     

全1。

     

也支持数值,例如1。

如果您确实要让节点运行,请在index.recovery.initial_shards: 1文件中设置elasticsearch.yml