ElasticSearch入门之es的分片交互过程, es添加文档分片流程, es删除文档分片流程, es删除文档分片流程 13

1. es添加文档分片交互流程

在这里插入图片描述

  1. 客户端发送一个索引的请求给node1
  2. node1接收到请求后,会根据请求中携带的参数"文档id"判断出该文档应该存储在具体哪一个shard中.
    shard = hash(rounting) % number_of_primary_shards
    比如, 计算出的结果是该条数据存在在shard0分片上.
    node1通过元数据信息可以知道shard0存在于哪一个节点上, 如图是node3节点, 于是node1会把请求转发给node3
  3. node3接收到请求之后会将请求并行的分发给shard0的所有副本中(R0,R1), 也就是存在于node1和node2中的副本;
    如果所有的副本都成功地接受了请求,并成功的存储了数据. 就会向node3回复一个成功确认
    当node3接收到了所有副本的成功的确认消息, 则最后向客户端返回一个Success的消息.

2. es删除文档分片交互流程

在这里插入图片描述
该过程可以分为四个阶段来描述:

  1. 客户端向node 1发送一个文档删除的请求。
  2. 同样的node 1通过请求中文档的 _id 值判断出该文档应该被存储在shard 0 这个分片中,并且node 1知道shard 0的primary shard位于node3这个节点上。因此node1会把这个请求转发到node3。
  3. node3接收到请求后,在主分片上面执行删除请求
  4. 如果node3成功地删除了文档,node3将会请求并行地发给其余所有的副本所在node中。
    这些node也同样操作删除,执行后则向node3发送一个成功确认,当node 3接收到所有的成功确认之后,
    再向客户端发送一个删除成功的信息。

3 es查询文档分片交互流程

在这里插入图片描述
检索文档的时候,我们并不知道文档在集群中的哪个位置,所以一般情况下不得不去询问index中的每一个shard,然后将结果拼接成一个大的已排好序的汇总结果列表;

  1. 客户端发送一个检索请求给node3,此时node3会创建一个空的优先级队列并且配置好分页参数from与size。
  2. node3将检所请求发送给index中的每一个shard(primary 和 replica),每一个在本地执行检索,并将结果添加到本地的优先级队列中;
  3. 每个shard返回本地优先级序列中所记录的_id与score值,并发送node3。Node3将这些值合并到自己的本地的优先级队列中,并做全局的排序(node 3将它们合并成一条汇总的结果),返回给客户端。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值