处理Elasticsearch集群状态为yellow历程

背景:公司的Es集群有两个Es节点,其中有一台机器磁盘不是太大,经常导致Es处于只读状态(Es在磁盘空间小于等于5%时会自动进入只读状态)。最近公司刚好有一台空闲的服务器,所以我就打算把磁盘空间不太大的Es服务器替换了(有人会问,为什么不增加磁盘。哎。。。小公司,我也很无奈)。费了9牛二虎之力终于把经常有问题的服务器替换下来了。但是发现集群状态不正常了,由之前的green变为yellow。小弟第一次处理这样的问题,记录下处理过程,便于加强记忆。

  1. 首先要确认,那些索引处于yellow状态
# 执行命令
GET _cluster/health?level=indices
  1. 查看处于yellow状态的原因
# 执行命令
GET _cluster/allocation/explain
{
  "index": "t_xa87_shop",
  "shard": 0,
  "primary": true
}

查看原因,analyzer [ik_max_word] not found for field。由于新安装的Es没有安装分词插件导致。按照官网教程进行安装。
注:https://github.com/medcl/elasticsearch-analysis-ik 主要要版本对应。

  1. 对有问题的yellow索引,进行分片副本重建
# 执行副本重建命令
POST /_cluster/reroute -d
{
  "commands": [
    {
      "allocate_replica": {
        "index": "t_xa87_shop",
        "shard": 0,
        "node": "node-3"
      }
    }
  ]
}

# 如果上面的不行可以添加如下参数
POST /_cluster/reroute?retry_failed=true -d
{
  "commands": [
    {
      "allocate_replica": {
        "index": "t_xa87_shop",
        "shard": 0,
        "node": "node-3"
      }
    }
  ]
}

你可能感兴趣的:(处理Elasticsearch集群状态为yellow历程)