Elasticsearch: 修改数据时各分片是如何交互的

创建一个测试索引docker,该索引包含2个分片和2个副本,那么1个主分片就存在着2个副本分片,该索引一共存在6个分片:

PUT doctor
{
  "settings": {
    "number_of_shards": 2,
    "number_of_replicas": 2
  },
   
  "mappings": {
    "doctor":{
      "properties":{
        "id":{
          "type":"integer"
        },
        "name":{
          "type":"keyword"
        }
      }
    }
  }
}

当前ElasticSearch集群存在着3个node,那么该索引中6个分片的分布状态如下图:

Q1:如果要修改数据,这些分片是如何交互的的?

A1:

      1.客户端发出新建、索引、删除请求,请求被发送到node 0 节点;

      2.节点使用索引的_id确定文档的分片位置,存储在node 0 节点中的primary shard 0 或者 primary shard 1上,在当前节点node 0 执行请求;

      3.请求执行成功后,也就是数据存入主分片后,那么节点node 0就会将该请求并行转发到node 1 和node 2节点上的主分片的对应副本分片上,副本分片执行成功后向node 0节点报告请求成功后,node 0节点向客户端报告请求成功。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值