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工作原理的主要内容,如果未能解决你的问题,请参考以下文章

ES工作原理

ES 查询数据的工作原理是什么?

ES(六) ElasticSearch搜索原理

es工作原理及如何构建集群

es工作原理及如何构建集群

es查询数据的工作原理是啥?