elasticsearch学习笔记(十五)——Elasticsearch partial update内置乐观锁并发控制

61次阅读

共计 645 个字符,预计需要花费 2 分钟才能阅读完成。

Elasticsearch partial update 内置了乐观锁并发控制机制。同样是基于_version(新版本更新为 if_seq_no 和 if_primary_term)进行乐观锁的并发控制。详细请看:https://segmentfault.com/a/11… 这里多提一点就是使用 partial update 有一个参数叫 retry_on_conflict,也就是可以基于 retry 策略:
我们回顾一下之前说的乐观锁并发控制策略在高并发更新数据时,它基于最新的数据和 if_seq_no,if_primary_term 进行修改,可能这个过程会需要反复执行好几次,才能成功,特别是在多线程并发更新同一条数据很频繁的情况下。而 partial update 就是再次基础上添加了一个参数 retry_on_conflict,可以设置最多重复的次数。示例:
POST /test_index/_update/3?retry_on_conflict=5
{
“doc”: {
“test_field1”: “update test1”
}
}
GET /test_index/_doc/3
{
“_index” : “test_index”,
“_type” : “_doc”,
“_id” : “3”,
“_version” : 3,
“_seq_no” : 2,
“_primary_term” : 1,
“found” : true,
“_source” : {
“test_field1” : “update test1”,
“test_field2” : “update test2”
}
}

正文完
 0