ES 架构原理
一、简介
二、架构
master node:负责 es 集群的节点发现和元数据管理
master-eligible node:有资格竞选 Master 的节点,一般奇数个
data node:存储数据
coordinating node:复制处理客户端请求的协调节点
ingest node:对索引文档做预处理工作的节点
shard:数据以shard为单位保存到data node中
primary/replica shard:每个shard可配置一个或多个replica 副本,primary shard会把请求复制到replica shard上
index:存储数据的基本单位,一个索引相当于一个库
type:每个index有一个或多个type,一个type相当于一张表;mapping相当于表结构定义
document:往一个index的一个type添加的一行数据称为document,每个document有多个field,每个field代表document的一个字段值
三、读写原理
es写入数据的过程
-
客户端选择一个node发送请求过去,这个node就是coordinating node (协调节点)
-
coordinating node,对document进行路由,将请求转发给对应的node
-
实际上的node上的primary shard处理请求,然后将数据同步到replica node
-
coordinating node,如果发现primary node和所有的replica node都搞定之后,就会返回请求到客户端
es读数据过程
查询,GET某一条的数据,写入某个document,这个document会自动给你分配一个全局的唯一ID,同时跟住这个ID进行hash路由到对应的primary shard上面去,当然也可以手动的设置ID
-
客户端发送任何一个请求到任意一个node,成为coordinate node
-
coordinate node 对document进行路由,将请求转发到对应的node,此时会使用round-robin随机轮训算法,在primary shard 以及所有的replica中随机选择一个,让读请求负载均衡,
-
接受请求的node,返回document给coordinate note
-
coordinate node返回给客户端
es搜索数据过程
-
客户端发送一个请求给coordinate node
-
协调节点将搜索的请求转发给所有的shard对应的primary shard 或replica shard
-
query phase:每一个shard 将自己搜索的结果(其实也就是一些唯一标识),返回给协调节点,有协调节点进行数据的合并,排序,分页等操作,产出最后的结果
-
fetch phase ,接着由协调节点,根据唯一标识去各个节点进行拉去数据,最总返回给客户端
参考
https://mp.weixin.qq.com/s/0LU1cK9_fmzNUBRa3V5rdg
https://niceaz.com/2018/12/09/elasticsearch-architecture/