Elasticsearch技术解析与实战(七)Elasticsearch partial update

普通的partial update

1.插入测试数据

PUT /test_index/test_type/10
{
  "test_field1": "test1",
  "test_field2": "test2"
}

2.更新

POST /test_index/test_type/10/_update
{
  "doc": {
    "test_field2": "updated test2"
  }
}

基于groovy脚本执行partial update

1.内置脚本

  插入测试数据

PUT /test_index/test_type/11
{
  "num": 0,
  "tags": []
}

  更新

POST /test_index/test_type/11/_update
{
   "script" : "ctx._source.num+=1"
}

2.外部脚本

  更新


POST /test_index/test_type/11/_update
{
  "script": {
    "lang": "groovy", 
    "file": "test-add-tags",
    "params": {
      "new_tag": "tag1"
    }
  }
}

用脚本删除文档


POST /test_index/test_type/11/_update
{
  "script": {
    "lang": "groovy",
    "file": "test-delete-document",
    "params": {
      "count": 1
    }
  }
}

upsert操作

POST /test_index/test_type/11/_update
{
   "script" : "ctx._source.num+=1",
   "upsert": {
       "num": 0,
       "tags": []
   }
}

 partial update内置乐观锁并发控制

post /index/type/id/_update?retry_on_conflict=5&version=6
原文地址:https://www.cnblogs.com/cnki/p/7507130.html