1)、綠色——最健康的狀態,代表所有的主分片和副本分片都可用;
2)、黃色——所有的主分片可用,但是部分副本分片不可用;
3)、紅色——部分主分片不可用。(此時執行查詢部分數據仍然可以查到,遇到這種情況,還是趕快解決比較好。)
方案一:極端情況——這個分片數據已經不可用,直接刪除該分片。
ES中沒有直接刪除分片的接口,除非整個節點數據已不再使用,刪除節點。
curl -XDELETE ‘localhost:9200/index_name/’
方案二:集群中節點數量>=集群中所有索引的最大副本數量 +1。
N> = R + 1
其中:
N——集群中節點的數目;
R——集群中所有索引的最大副本數目。
知識點:
當節點加入和離開集群時,主節點會自動重新分配分片,以確保分片的多個副本不會分配給同一個節點。
換句話說,主節點不會將主分片分配給與其副本相同的節點,也不會將同一分片的兩個副本分配給同一個節點。
如果沒有足夠的節點相應地分配分片,則分片可能會處於未分配狀態。
由於我的集群就一個節點,即N=1;所以R=0,才能滿足公式。
問題就轉嫁為:
1)添加節點處理,即N增大;
2)刪除副本分片,即R置為0。
R置為0的方式,可以通過如下命令行實現:
curl -XPUT "http://localhost:9200/_settings" -d'
{ "number_of_replicas" : 0 } '
方案三:allocate重新分配分片。
如果方案二仍然未解決,可以考慮重新分配分片。