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请求
分片所在节点向协调节点返回数据
协调节点等待所有文档被取得