問題現象:es 集羣狀態red,查看基本信息以下:curl
解決過程:url
1- 查看未分配分片信息code
GET localhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason
2- 首先設置全部索引副本個數全爲0blog
curl -XPUT "http://localhost:9200/_settings" -d' { "number_of_replicas" : 0 } '{"acknowledged":true}
3- 執行下面語句查看集羣狀態:索引
curl localhost:9200/_cluster/health?pretty
別急,此時確定仍是red狀態,由於通常red狀態是由於有主分片沒有被分配 io
4- 使用下面語句查看未分配分片class
GET localhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason
發現有未分配主分片,個人解決方案是,在確認該索引能夠刪除的狀況下,直接刪除索引集羣
5- 刪除主分片未分配索引權限
curl -XDELETE localhost:9200/***
6- 確認是否還有未分配主分片grep
curl -XGET localhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason| grep UNASSIGNED
7- 查看集羣狀態,此時,若是6結果爲空,則狀態爲green或者yellow
8- 可是稍後重建索引以後,發現集羣狀態又變爲red
9- 查看未分配主分片緣由:
curl -XGET localhost:9200/_cluster/allocation/explain?pretty
緣由發現是索引往節點掛載的data目錄寫操做時,出現accessdenied拒絕;
解決方式:chmod -R 777 data
修改data目錄操做權限,再次刪除上述索引,後集羣狀態正常;