ES工作原理
Posted 那个少年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES工作原理相关的知识,希望对你有一定的参考价值。
写入过程
(1)请求打到的节点叫做协调节点,协调节点根据特定的路由算法将文档进行路由,即将请求转发到指定的节点(路由算法:hash(doc_id) % num_primary_shard)
(2)节点的主分片 primary shard 处理请求,并将数据同步到副本分片 replica shard
(3)协调节点发现主分片和所有的副本分片写完之后,再返回客户端结果
读取过程
(1)请求打到的节点叫做协调节点,协调节点会根据文档id进行 hash,判断文档在哪个节点,然后根据随机算法,从相应节点的主分片和副本分片中随机选择一个进行查询
(2)接受请求的分片将结果返回协调节点,协调节点在返回数据给客户端
查询过程
多 shard 搜索过程分别两部分,一是在多个 shard 中查询符合的文档,二是从多个 shard 中获取数据
1. 查询阶段
当请求到达某个节点后,该节点就是当前请求的协调节点。协调节点首先会创建一个 from + size 的空优先队列,
- 向相关的 shard 发送查询请求
- 每个 shard 也会在本地创建一个 from + size 的空优先队列,然后查询符合的文档,再将结果返回协调节点,但结果中只包含文档 id 和排序值
- 协调节点合并其他分片返回的查询结果
2. 获取数据阶段
- 协调节点辨别哪些文档需要取回,并向相关分片发送多个 GET 请求获取数据
- 分片加载并丰富文档后返回
- 协调节点合并结果,然后返回给客户端
以上是关于ES工作原理的主要内容,如果未能解决你的问题,请参考以下文章