Elasticsearch的读写搜索过程

Elasticsearch在读写数据时,涉及协调节点、主分片和副本分片的交互。写入过程中,客户端请求首先发送到协调节点,再路由到相应的primaryshard并同步到replicashards。读取时,根据docid进行hash路由,使用轮询算法在分片间平衡负载。全文搜索时,协调节点将请求分发到所有shard,汇总结果后返回给客户端。
摘要由CSDN通过智能技术生成

问题

Elasticsearch在读写数据的过程是什么样的?你该如何理解这个问题!

Elasticsearch的写数据过程

  1. 客户端选择一个节点发送请求,这个时候我们所说的这个节点就是协调节点(coordinating node)
  2. 协调节点对document进行了路由,然后将请求再转发给对应的节点(primary shard)
  3. 实际上操作的节点的primary shard请求处理,之后再将数据进行同步,同步到replica node
  4. 协调节点发现primary node及所有的replica node都搞定了之后,就将相应结果返回给我们的客户端

Elasticsearch的读数据过程

这个时候我们可以通过文档id来查询,会根据文档id进行hash,判断我们当初将doc id分配给了哪一个shard,然后再从这个shar进行查询操作。

  1. 客户端发送一个请求到任意的一个节点,成为了协调节点(coordinate node)
  2. 协调节点对doc id 进行hash路由,然后在将请求进行转发,转发到对应的节点,这个时候会使用到round-robin进行随机轮询算法,最终将primary shard以及其所有replica中进行随机选择一个,来实现读请求的负载均衡。
  3. 接收到请求的节点返回document给协调节点。
  4. 协调节点返回document再给到客户端。

Elasticsearch的搜索数据过程

其实elasticsearch最强大的是他的全文检索功能。

  1. 客户端发送一个请求到协调节点
  2. 协调节点会将搜索请求转发到所有的shard中对应的replica shard或者primary shard
  3. 每个shard都会将自己的搜索结果返回给协调节点,然后再由协调节点对数据进行合并、排序、分页等操作,最终会输出结果
  4. 接下来协调节点会根据doc id 去各个节点上面拉取实际的文档数据,完成之后会最终将数据返回给客户端。

好了,今天关于Elasticsearch的读、写、搜索过程就讲解到这里,欢迎大家留言交流

也欢迎大家关注我的公众号《coder练习生》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ybb_ymm

你的鼓励会是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值