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