Elasticsearch 健康状态处理
笔者在自己的 ubuntu 服务器上使用 GET /_cat/health?v
命令时,返回值如下所示
可以看到集群状态为 yellow,这是什么意思呢?原来在 es 的集群状态中,有三种情况,官网描述如下。
-
RED: Some or all of (primary) shards are not ready.
-
YELLOW: Elasticsearch has allocated all of the primary shards, but some/all of the replicas have not been allocated.
-
GREEN: Great. Your cluster is fully operational. Elasticsearch is able to allocate all shards and replicas to machines within the cluster.
由此可知,我们的分片副本还没有被分配到某个节点上。这是因为笔者目前的 es 集群由单节点组成,副本集没有足够的节点容纳它。解决办法也非常简单,由于笔者最近都是单机演示,这里也给出单机的解决方案(然并卵)。
笔者的 es 实例文件夹放在 elasticsearch\elasticsearch-5.2.2 文件夹下,将其复制一份为 elasticsearch\elasticsearch-5.2.2_node 放在同个文件夹下,然后按照正常步骤启动即可。再次使用 GET /_cat/health?v
查看时,便会返回一下内容
{
"cluster_name": "elasticsearch",
"status": "green",
"timed_out": false,
"number_of_nodes": 2,
"number_of_data_nodes": 2,
"active_primary_shards": 6,
"active_shards": 12,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 0,
"delayed_unassigned_shards": 0,
"number_of_pending_tasks": 0,
"number_of_in_flight_fetch": 0,
"task_max_waiting_in_queue_millis": 0,
"active_shards_percent_as_number": 100
}