首页 > 其他 > 详细

es读写和搜索数据的工作原理?

时间:2019-08-08 21:41:51      阅读:124      评论:0      收藏:0      [点我收藏+]

写数据:

  1. 客户端向任意节点发送请求,处理请求的节点就是协调节点。
  2. 协调节点将请求路由到主分片节点,
  3. 主分片处理请求后,同步到副本分片
  4. 协调节点返回响应。

? ?

读数据:

根据doc id读取文档,对应一个doc id。

get某一条数据,写入了某个doc,这个doc会自动给你分配一个全局唯一的id,也是根据doc id路由到主分片。也可以手动指定doc id,比如订单id。

  1. 客户端向任意节点发送请求,处理请求的节点就是协调节点。
  2. 写文档的时候,自动分配doc id,或者根据订单号等指定doc id。协调节点根据唯一的doc id找到对应的主分片和副本分片,将请求路由到宿主节点。读请求负载均衡默认用round-robin算法。
  3. 接收请求的node返回doc给协调节点
  4. 协调节点返回doc给客户端。

? ?

搜索数据:

最强大的就是全文检索,根据关键词来搜索,找到相关的文档。

  1. 客户端向某节点发送请求,该节点变身协调节点,
  2. 协调节点将请求转发到所有的shard。
  3. query phase:每个shard将自己的搜索结果(doc id)返回给协调节点,由协调节点进行数据的合并、排序、分页等操作,产生最终结果。
  4. fetch phase:协调节点根据doc id去各个节点拉取实际的doc数据,最终返回给客户端。

? ?

? ?

es读写和搜索数据的工作原理?

原文:https://www.cnblogs.com/gxli/p/11323995.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!