es 并发更新

es 的数据并发更新的处理,采用乐观锁的方式。

我现在学习使用的版本是 7.11

数据更新有两种:1 覆盖更新;2 部分更新。

在处理并发时,我发现这两种方式使用的参数是不一样的。

首先创建索引

DELETE student-001
PUT student-001
{"settings":{"number_of_shards":3},"mappings":{"properties":{"id":{"type":"long"},"name":{"type":"text","fields":{"key":{"type":"keyword"}}},"age":{"type":"integer"},"year":{"type":"integer","fields":{"key":{"type":"keyword"}}}}}}

添加数据

PUT student-001/_doc/1
{
  "id": 1,
  "name": "student-1",
  "year": 1
}

 数据更新

1 覆盖更新

POST student-001/_doc/1?version_type=external&version=25
{
  "name": "student-12"
}

使用的参数是: version_type=external&version=25

version 可以查出来

需要注意的是,入参的version 的值要比查出来的 version 的值在大

2 部分更新

POST student-001/_update/1?if_seq_no=22&if_primary_term=1
{
  "doc": {
    "name": "student-123"
  }
}

使用的参数是: if_seq_no=22&if_primary_term=1

需要注意的是,入参的 if_primary_term 的值,要比查出来的值 _primary_term 大,否则会更新不成功。

查询数据的时候,可以添加参数来获取 verion、 _seq_no、_primary_term 等相应的字段

GET student-001/_search?version=true&seq_no_primary_term=true

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值