標籤:

elasticsearch狀態顯示為red,該如何修復索引呢?

現在通過curl XGET命令查詢當前的es狀態,顯示為紅色。我在新建索引的時候沒有特意指定分片和備份的個數,也就是使用的是默認個數。查詢完的結果是這樣的:

{

"cluster_name" : "elasticsearch",

"status" : "red",

"timed_out" : false,

"number_of_nodes" : 1,

"number_of_data_nodes" : 1,

"active_primary_shards" : 10,

"active_shards" : 10,

"relocating_shards" : 0,

"initializing_shards" : 0,

"unassigned_shards" : 12

}


全默認的話,應該是1個index下有5個primary shard和1個replica。不過你的health數據顯示你一共應該有22個shard。我猜你裡面有一個.kibana索引?這個是create的時候指定了1個shard的。

然後,因為你只有一個datanode,所以replica shard沒法跟primary一塊,分配不下去。所以,最終,你red的原因是有一個primary shard未分配。通過/_cat/shards介面看看具體是哪個primary shard沒分配,通過reroute介面強制分配下去,就可以變成yellow了。

至於green,只能加一台機器咯~


首先說一下,es集群的狀態,它主要分為三種情況:

  • Green:所有主分片和副本分片都可用;

  • Yellow:所有主分片可用,但不是所有副本分片都可用;

  • Red:不是所有的主分片都可用。

如果你不對es進行配置的話,默認情況下,一個index是有5個primary shard(主分片),而一個主分片默認對應一個replicas(副本分片)。

副本分片的意義在於備份主分片中的數據,如果你只有一個es節點,那麼副本分片就沒有任何意義,因為當es宕機以後,這種情況主分片和副本分片都會數據丟失,所以只有至少兩個es節點,副本分片才會有意義。

具體你可以參考一下這裡:Elasticsearch簡單介紹、配置說明及實例展現elasticsearch集群生態


推薦閱讀:

學習elasticsearch必須先學習lucene嗎?
elasticsearch,我用ik分詞,搜索"寶馬2012",怎樣只查出即包含「寶馬」又包含「2012」的文章?
Elasticsearch到底能玩多大的數據量?
知乎為什麼要自己開發日誌聚合系統「kids」而不用更簡潔方便的「ELK」?

TAG:Elasticsearch |