1. 简介
ElasticSearch是一个高可扩展的开源全文搜索分析引擎,可以用它近实时的来存储、搜索和分析大量的数据。
ElasticSearch的底层是开源库Lucene,但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。
2. ElasticSearch中的基本概念
1. Cluster
集群,一个ES集群是由多个节点(Node)组成的,每个集群都有一个cluster name作为标识,在同一网段下的ElasticSearch实例会通过cluster name决定加入到那个集群下。集群是一个或者多个节点的集合,他们一起保存整个数据,并提供跨所有节点的联合索引和搜索功能。
问题:一个es服务可以有多个集群?
2. node
节点,一个ES实例就是一个node,一个机器可以有多个实例,所以并不是说一台机器就是一个node,大多数情况下,每个node运行在一个独立的环境或者虚拟机上。
3. index
索引,即一系列documents的集合
4. shard
(1). 分片,ES是分布式搜索引擎,每个索引有一个或多个分片,索引的数据被分配到各个分片上,相当于一桶水,用N个杯子装。
(2). 分片有助于横向扩展,N个分片会被尽可能平均地(rebalance)分配在不同的节点上(例如你有2个节点,4个主分片(不考虑备份),那么每个节点会分到2个分片,后来你增加了2个节点,那么你这4个节点上都会有1个分片,这个过程叫relocation,ES感知后自动完成) 问题:数据会尽可能平均分配到各个分片上吗?
(3). 分片是独立的,对于一个Search Request的行为,每个分片都会执行这个Request
(4). 每个分片都是一个Lucene Index,所以一个分片只能存放 Integer.MAX_VALUE - 128 = 2,147,483,519个docs。
5. replica
(1). 复制,可以理解为备份分片,相应地每个备份有对应的主分片(primary shard)
(2). 主分片和备分片不会出现在同一个节点上(防止单点故障),默认情况下一个索引创建5个分片一个备份(即5primary+5replica=10个分片)
(3). 如果你只有一个节点,那么5个replica都无法分配(unassigned),此时cluster status会变成Yellow
(4). 作用:对于分布式搜索引擎来说,分片及副本的分配将是高可用及快速响应的设计核心,主分片与副本分片都能处理查询请求,他们的唯一区别是只有主分片才能处理索引请求。此外副本策略提供了高可用和数据安全的保障,当所在的机器宕机,Elasticsearch使用其副本进行恢复,从而避免数据丢失。
6. 集群发现机制
比如当前我们启动了一个es进程,当启动了第二个进程时,这个进程作为一个node自动发现了集群,并加入了进去。
Shard负载均衡:比如现在有10个shard,集群中有三个节点,es会均衡的进行分配,以保证每个节点均衡的负载请求。
请求路由:当索引一个文档的时候,文档会被存储到一个主分片中。ElasticSearch通过下面这个公式决定索引到那个分片:
shard = hash(routing) % number_of_primary_shards
routing 是一个可变值,默认是文档的 _id ,也可以设置成一个自定义的值。 routing 通过 hash 函数生成一个数字,然后这个数字再除以 number_of_primary_shards (主分片的数量)后得到 余数 。这个分布在 0 到 number_of_primary_shards-1 之间的余数,就是我们所寻求的文档所在分片的位置。
7. Rebalance自动均衡
创建的索引默认有5个分片,只有一个节点时5个分片都在同一个node上,如果新加入一个node,那么ElasticSearch会重新把分片均衡到node上。
shard&replica机制梳理总结
1. index包含多个shard
2. 每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力
3. 增减节点时,shard会自动在nodes中负载均衡
4. primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica shard中,不可能存在于多个primary shard
5. replica shard是primary shard的副本,负责容错,以及承担读请求负载
6. primary shard的数量在创建索引的时候就固定了,replica shard的数量可以随时修改
7. primar