elasticsearch数据写入流程:
1、客户端发起数据索引(写入)请求,可以发送至集群中的任一节点,该节点会成为协调节点(coordinating node)。
2、通过hash计算出文档要写入的主分片,协调 节点根据路由将请求转发至对应的主分片(primary sharding) 所在的数据节点(data node) 。
3、数据节点 节点上的主分片处理请求,写入文档到索引库,并将数据同步到对应的副本分片( replica sharding)。
4、等待主分片和 副分片都保存好文档后,返回客户端响应。
elasticsearch数据读流程:
1、客户端发起数据检索请求,可以发送至集群中的任一节点,该节点会成为协调节点。
2、协调节点将查询请求广播到集群中的每一个数据节点,这些数据节点会处理该查询请求。
3、每个分片进行数据查询,将符合条件的数据放在一个队列中,并将这些数据的文档id、节点信息、分片信息都返回给协调节点。
4、协调节点将所有结果进行汇总、排序。
5、协调节点向包含这些文档id的分片发送get请求,对应分片返回数据给协调节点,协调节点将数据整合后返回给客户端。