接收写请求
es可以通过轮训访问集群中的各个节点,被访问的这个节点叫做协调节点
处理写请求
如图:
- 客户端给集群发送写请求,处理节点为node1,此时node1为协调节点。
- 节点通过文档的_id计算属于分片0。协调节点会将请求发送给node3,因为主分片在node3上,并且写操作是在主分片完成之后才能复制到副本分片
- node1的主分片p0完成写操作后,将请求并行转发到其它副本分片所在的节点,一旦所有副本分片都报告成功了,node3将向协调节点报告成功,协调节点将向客户端报告成功

处理更新请求
如图:
- 客户端向协调节点node1发送更新请求
- node1通过_id计算出属于分片0,将请求转发到主分区所在的node3节点
- node3从主分片检索文档,修改文档_source字段中的JSON,并且尝试重新索引主分片中的文档,如果文档被另一个进程修改,就会重新尝试步骤3,超过retry_on_conflict次数后放弃。
- 如果主分片更新成功,将会把新版本的文档转发到各个副本分片重新建立索引,一旦所有副本分片都返回成功,主分片所在的节点node3也向协调节点返回成功,协调节点向客户端返回成功。

基于文档的复制
当主分片把更改转发到副本分片时,不会转发更新请求,它会转发新版本的完整的文档
elasticsearch处理写请求(新建,索引和删除文档)的过程原理解读
原文:https://www.cnblogs.com/yushucan/p/14735420.html