目录
一、整体架构图
二、重要工作原理
1、文档写入原理
2、文档检索原理
一、整体架构
二、重要工作原理
1、文档写入原理
1)选择任意一个DataNode发送请求,例如:node2。此时,node2就成为一个coordinating node(协调节点)
2)计算得到文档要写入的分片
`shard = hash(routing) % number_of_primary_shards`
routing 是一个可变值,默认是文档的 _id
3)coordinating node会进行路由,将请求转发给对应的primary shard所在的DataNode(假设primary shard在node1、replica shard在node2)
4)node1节点上的Primary Shard处理请求,写入数据到索引库中,并将数据同步到Replica shard
5)Primary Shard和Replica Shard都保存好了文档,返回client
2、文档检索原理
1)client发起查询请求,某个DataNode接收到请求,该DataNode就会成为协调节点(Coordinating Node)
2)协调节点(Coordinating Node)将查询请求广播到每一个数据节点,这些数据节点的分片会处理该查询请求
3)每个分片进行数据查询,将符合条件的数据放在一个优先队列中,并将这些数据的文档ID、节点信息、分片信息返回给协调节点
4)协调节点将所有的结果进行汇总,并进行全局排序
5)协调节点向包含这些文档ID的分片发送get请求,对应的分片将文档数据返回给协调节点,最后协调节点将数据返回给客户端