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" } }