1. 程式人生 > 實用技巧 >elasticsearch 文件樂觀鎖控制 if_seq_no與if_primary_term

elasticsearch 文件樂觀鎖控制 if_seq_no與if_primary_term

1.插入新資料

POST /my_doc/_doc
{
"id": 1010,
"name": "imooc-1010",
"desc": "imoocimooc!",
"create_date": "2019-12-24"
}

此時 _version 為 1

2.修改資料

POST /my_doc/_doc/{_id}/_update
{
      "doc": {
              "name": "慕課"
      }
}

此時 _version 為 2

3.模擬兩個客戶端操作同一個文件資料,_version都攜帶為一樣的數值

# 操作1
POST /my_doc/_doc/{_id}/_update?if_seq_no={數值}&if_primary_term={數值}
{
      "doc": {
            "name": "慕課1"
      }    
}
# 操作2
POST /my_doc/_doc/{_id}/_update?if_seq_no={數值}&if_primary_term={數值}
{
      "doc": {
            "name": "慕課2"
      }
}

第一次成功,第二次在用相同的數值更新失敗

版本元資料
_seq_no:文件版本號,作用同_version(相當於學生編號,每個班級的班主任為學生分配編號,效率要比學校教務處分配來的更加高
來更方便)
_primary_term:文件所在位置(相當於班級)
官文地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/optimistic-concurrency-control.html