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 |