Elasticsearch入门-3.集群内部原理

1. 空集群

当Es集群中只有一个节点时,该节点自动称为主节点,主节点负责管理集群内的所有变更(增加删除索引、节点等)。当集群中有多个节点时Es会自动选举出主节点,并对数据进行平衡。

2.集群健康

Es会对集群健康信息进行统计

1
GET /_cluster/health
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"cluster_name": "elasticsearch",
"status": "yellow", //green所有分片都正常,yellow主分片正常副本分片有异常,red主分片有异常
"timed_out": false,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 10,
"active_shards": 10,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 10, //未分配分片数,有数据丢失风险
"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": 50
}

3.索引和分片

向Es添加数据时需要索引来记录数据保存的物理位置,所以需要使用索引

索引:

  • 指向一个或多个物理分片的逻辑命名空间
  • 应用程序直接与索引进行交互

分片:

  • 是一个Lucene实例

    • 是一个底层的工作单元,仅保存了全部数据中的一部分

    • 分布到集群各个节点,Es会根据节点的增减进行分片迁移

  • 分片可以分为主分片和副分片,一个索引的主分片数在创建索引时确定,副分片的数量可以修改,用于数据冗余和读操作

    1
    2
    3
    4
    5
    6
    7
    PUT /blogs
    {
    "settings" : {
    "number_of_shards" : 3, //主分片数
    "number_of_replicas" : 1 //副分片数
    }
    }