es,其实是有个内置的脚本支持的,可以基于groovy脚本实现各种各样的复杂的操作
基于groovy脚本,如何执行partial update
PUT /index/type/id
{
"num":0,
"tags":[]
}
1. 内置脚本
POST /index/type/id/_update
{
"script":"ctx._source.num+=1"
}
2. 外部脚本
ctx._source.tags+=new_tag
POST /index/type/id/_update
{
"script":{
"lang":"groovy",
"file":"test-add-tags",
"params":{
"new_tag":"tag1"
}
}
}
3. 用脚本删除文档
ctx.op = ctx._source.num == count ? 'delete':'none'
POST /index/type/id/_update
{
"script":{
"lang":"groovy",
"file":"test-delete-tags",
"params":{
"count":1
}
}
}