ES 架构原理

ES 架构原理


一、简介

Elasticsearch是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch基于Lucene开发,现在是使用最广的开源搜索引擎之一。Elasticsearch可以应用于在/离线日志流水、用户标签画像、数据库二级缓存、安全风控行为数据、图数据库索引、监控数据、Wiki文档检索等应用场景。


二、架构

Elasticsearch 架构原理和网易云NES 最佳实践— langrx

 

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写入数据的过程

  1. 客户端选择一个node发送请求过去,这个node就是coordinating node (协调节点)

  2. coordinating node,对document进行路由,将请求转发给对应的node

  3. 实际上的node上的primary shard处理请求,然后将数据同步到replica node

  4. coordinating node,如果发现primary node和所有的replica node都搞定之后,就会返回请求到客户端

es读数据过程

查询,GET某一条的数据,写入某个document,这个document会自动给你分配一个全局的唯一ID,同时跟住这个ID进行hash路由到对应的primary shard上面去,当然也可以手动的设置ID

  1. 客户端发送任何一个请求到任意一个node,成为coordinate node

  2. coordinate node 对document进行路由,将请求转发到对应的node,此时会使用round-robin随机轮训算法,在primary shard 以及所有的replica中随机选择一个,让读请求负载均衡,

  3. 接受请求的node,返回document给coordinate note

  4. coordinate node返回给客户端

es搜索数据过程

  1. 客户端发送一个请求给coordinate node

  2. 协调节点将搜索的请求转发给所有的shard对应的primary shard 或replica shard

  3. query phase:每一个shard 将自己搜索的结果(其实也就是一些唯一标识),返回给协调节点,有协调节点进行数据的合并,排序,分页等操作,产出最后的结果

  4. fetch phase ,接着由协调节点,根据唯一标识去各个节点进行拉去数据,最总返回给客户端


参考

https://mp.weixin.qq.com/s/0LU1cK9_fmzNUBRa3V5rdg

https://niceaz.com/2018/12/09/elasticsearch-architecture/

https://segmentfault.com/a/1190000015256970

posted @ 2020-07-21 11:12  heaventouch  阅读(1691)  评论(0编辑  收藏  举报