elasticsearch學習筆記(十五)——Elasticsearch partial update內置樂觀鎖併發控制

Elasticsearch partial update內置了樂觀鎖併發控制機制。一樣是基於_version(新版本更新爲if_seq_no和if_primary_term)進行樂觀鎖的併發控制。詳細請看:https://segmentfault.com/a/11...
這裏多提一點就是使用partial update有一個參數叫retry_on_conflict,也就是能夠基於retry策略:segmentfault

咱們回顧一下以前說的樂觀鎖併發控制策略
在高併發更新數據時,它基於最新的數據和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"
  }
}
相關文章
相關標籤/搜索