Elasticsearch 顶尖高手(19)—基于groovy脚本执行partial update
Posted mr-wangyue
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch 顶尖高手(19)—基于groovy脚本执行partial update相关的知识,希望对你有一定的参考价值。
es,其实是有内置脚本支持的, 可以基于groovy脚本实现各种各样的复杂操作
基于groovy脚本,如何执行partial update
创建数据
PUT /test_index/test_type/11
"num":0,
"tags":[]
1.内置脚本
POST /test_index/test_type/11/_update
“script”:”cts._source.num+=1”
2.外部脚本
脚本存放路径 D:\\elasticsearch-5.2.0\\config\\scripts
脚本内容
执行方式
POST /test_index/test_type/11/_update
"script":
"lang": "groovy",
"file": "test-add-tags",
"params":
"new_tag":"tag1"
返回结果
"_index": "test_index",
"_type": "test_type",
"_id": "11",
"_version": 3,
"found": true,
"_source":
"num": 1,
"tags": [
"tag1"
]
3.用脚本删除文档
脚本内容:ctx.op = ctx._source.num == count?‘delete‘:‘none‘
4.upsert操作
POST /test_index/test_type/11/_update
“script”:”ctx._source.num+=1”,
“upsert”:
“num”:0
也就是,当更新的数据不存在时,update操作会报错。而upsert语句,当数据不存在时,初始化数据,并且更新数据
5.aa
以上是关于Elasticsearch 顶尖高手(19)—基于groovy脚本执行partial update的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch 顶尖高手—剖析Elasticsearch的基础分布式架构
Elasticsearch顶尖高手系列-高手进阶篇(最新第二版)