yangyang12138

导航

es(二)

一.写流程

  1.客户端想node1发送写请求

  2.node1使用id来确定文档属于分片0,通过集群状态中的内容路由表信息获知分片0的主分片位于node3,因此请求转发到node3上

  3.node3上的主分片执行写操作,如果写入成功,则它将请求并行转发到node1和node2的副分片上,等待返回结果,当所有分片都报告成功,node3将向所有协调节点报告成功,协调节点再向客户端报告成功。

二、协调节点流程

  1.参数检查

  2.处理pipeline

  3.自动创建索引

  4.对请求的预处理

  5.检测集群状态

  6.内容路由,构建基于shared的请求

  7.路由算法

  8.转发请求并等待响应

三、主分片流程

  1.检查请求

  2.是否延迟执行

  3.判断主分片是否已经发生迁移

  4.检测写一致

  5.写lucene和事物日志

  6.flush translog

  7.写副分片

  8.处理副分片写失败情况

四、get流程

  1.客户端想node1发送读请求

  2.node1使用文档id来确定文档属于分片0,通过集群状态中的内容路由表信息获知分片0有三个副本数据,位于所有三个节点中,此时它可以将数据发送到任意节点,这里它将请求转发到node2

  3.node2将文档返给node1,node1将稳定返回给客户端

  4.协调节点   内容路由,转发请求

  5.数据节点 读取及过滤 

五、搜索过程

  流程图

    

 

   1.query阶段

    客户端发送search请求到node3

    node3将查询请求转发到索引的每个主分片和副分片

    每个分片执行本地查询,并在本地打分,添加到本地有序优先队列

    每个分片返回各自的队列中所有文档id和排序值给协调节点

  2.fetch阶段

    协调节点想相关node发送get请求

    分片所在节点向协调节点返回数据

    协调节点等待所有文档被取得

 

posted on 2020-08-11 00:57  杨杨09265  阅读(107)  评论(0编辑  收藏  举报