集群
一个运行中的Elasticsearch被称为一个节点,而集群就是由一个或者多个拥有相同cluster.name的配置节点组成,它们共同承担数据负载与压力。当集群减员或者增员时,集群将会重新平均分布所有的数据。
当一个节点被选择成为主节点时,它将会负责集群内的所有变更,包括增加删除索引、增加删除节点等。而主节点并不需要涉及到文档级别的变更和搜索等操作,所以当集群只拥有一个主节点的情况下,即使流量的增加它也不会成为瓶颈。 任何节点都可以成为主节点。我们的示例集群就只有一个节点,所以它同时也成为了主节点。
作为用户,我们可以将请求发送到 集群中的任何节点 ,包括主节点。 每个节点都知道任意文档所处的位置,并且能够将我们的请求直接转发到存储我们所需文档的节点。 无论我们将请求发送到哪个节点,它都能负责从各个包含我们所需文档的节点收集回数据,并将最终结果返回給客户端。
集群健康
ElasticSearch集群监控信息中包含了大量的统计信息,其中最为关键的应该是集群健康数据。我们可以通过如下命令来查看:
GET /_cluster/health
返回结果:
{ "cluster_name" : "es-cn-m7r1y71jn000xwzks", "status" : "green", "timed_out" : false, "number_of_nodes" : 3, "number_of_data_nodes" : 3, "active_primary_shards" : 23, "active_shards" : 46, "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.0 }
在这些返回数据中,我们最需要注意的时status字段的值,它直接反应了集群的最终状态。它分别有以下三种状态:
status值 | 含义 |
---|---|
green | 所有的主分片和副本分片都正常运行 |
yellow | 所有的主分片都正常运行,但不是所有的副本分片都正常运行。 |
red | 有主分片没能正常运行。 |