乐趣区

elasticsearch学习笔记(十九)——Elasticsearch document查询内部原理

下面直接点,先描述一下一个查询请求打过来 Elasticsearch 内部做了什么。

(1)客户端发送请求到任意一个 node,这个 node 就成为了协调节点 coordinating node
(2)协调节点 coordinating node 会对 document 进行路由,将请求转发到包含该 document 的对应的 node 上面去,此时会使用 round-robin 随机轮询算法,在 primary shard 以及所有的 replica shard 中随机选择一个,让打过来的读请求实现负载均衡
(3)接收请求的 node 会返回 document 给协调节点 coordinating node
(4)协调节点将 document 数据返回给客户端

对于读取请求,协调节点将在每个请求上选择不同的分片副本以平衡负载; 它循环遍历所有碎片副本。

在索引文档时,文档可能已经存在于主分片上但尚未复制到副本分片。在这种情况下,副本可能会报告文档不存在,而主副本可能会成功返回文档。索引请求将成功返回给用户后,该文档将在主分片和所有副本分片上可用。

最后简单描述一下随机轮询算法:
举个例子,比如一个协调节点 coordinating 接受到一个 document 的 4 次请求,就会使用随机轮询算法,循环遍历所有 shard,将 4 次请求均匀的打在所有 shard 上面,比如有 4 个 shard,就会每个 shard 各一个请求。

退出移动版