ElasticSearch教程 ElasticSearch Script update,1.x版本和2.x版本 Script语法更新Demo

JSON 2016-12-29 13:58:44 10849

我们稍微了解  ElasticSearch  都知道   ElasticSearch  支持Script 语法,用起来挺方便的。

一、Elasticsearch 1.x 版本 Script 语法。

1.curl 语法

curl -XPOST 'localhost:9200/demo/test/1/_update?pretty' -d '
{
  "script" : "ctx._source.xcount += 5"
}'

这样会把index:demo ,type:test ,id:1 为条件的数据的xcount 字段在原基础上+5

ctx._source  指向数据的body ,也就是你存储的所有字段。

2.Elasticsearch Java API 语法

//构造一个Map,用于参数传递
Map<String, Object> paramsMap = Maps.newHashMap();

params.put("count", 10);
UpdateResponse response = client.prepareUpdate("demo", "test", "1")
//更新指定的字段
.setScript("ctx._source.xcount = count")
.setScriptParams(paramsMap)
//执行
.execute().actionGet();

如上代码,支持参数传递,也支持类似curl 语法中的+=5 类似的运算。

当然也支持字段之间的赋值。比如下面把当前数据的version 赋值给 xcount

//构造一个Map,用于参数传递
Map<String, Object> paramsMap = Maps.newHashMap();

params.put("count", 10);
UpdateResponse response = client.prepareUpdate("demo", "test", "1")
//更新指定的字段,把当前数据的version 赋值给 xcount 字段
.setScript("ctx._source.xcount = ctx._version")
.setScriptParams(paramsMap)
//执行
.execute().actionGet();

二、Elasticsearch 2.x 版本 Script 语法。

1.curl 语法

curl 语法其实和1.x 没变化,所以参考1.x 版本。

2.Elasticsearch Java API 语法

其实差不多,只是有点小变化。以前是直接传递字符串的 Script 现在需要传递 Script 对象。

UpdateResponse response = ESTools.client.prepareUpdate(index, type, id)
            .setScript(new Script("ctx._source.xcount = ctx._version"))
            .get();

当然,功能是变强大了,把具体的Script 脚本语法,变成面向对象的方式,复杂的可以用对象的方式解决,而不是像以前拼串一大堆。容易出错。

版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/205.html

转载时必须以链接形式注明原始出处及本声明。


如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
Elasticsearch 好消息, X-Pack的开源:第一阶段完成
Elasticsearch教程Elasticsearch Java API创建Mapping,指定分词器
Elasticsearch教程(四) elasticsearch head 插件安装使用
Elasticsearch教程(五) elasticsearch Mapping的创建
Elasticsearch教程Elasticsearch count 查询,Elasticsearch 查询是否存在
Elasticsearch教程Elasticsearch配置文件 — elasticsearch.yml
Elasticsearch教程(六) elasticsearch Client创建
Elasticsearch 教程Elasticsearch部署阿里云集群,支持外网请求方式
Elasticsearch教程(八) elasticsearch delete 删除数据(Java)
Elasticsearch教程Elasticsearch安全篇,通过Nginx http basic 限制访问
最新文章
文件上传漏洞与防御 4058
前端构建工具选型指南:Webpack、Vite、Rollup、esbuild 深度对比 1444
物联网时代2026年时序数据库选型指南 1151
SaaS行业面临AI挑战:从“无限复用”到“灵活适应” 1269
神经网络:从构造到模型训练全链路解析 1168
一文吃透 Redis 核心存储结构:ziplist、listpack 与哈希表扩容 / 并发查询 1593
Linux sudo提权完整指南:从基础用法到生产级安全配置 691
XSS 和 CSRF 的本质区别及开发防御全解析 772
JVM垃圾回收(GC)全维度解析:从原理到调优实战 813
Linux动静态库与ELF加载全解析:从实操制作到底层原理 912
最热文章
免费天气API,天气JSON API,不限次数获取十五天的天气预报 783114
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 711464
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 679993
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 562673
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 512621
Elasticsearch教程(四) elasticsearch head 插件安装和使用 484794
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 302947
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 247433
Elasticsearch教程(一),全程直播(小白级别) 233097
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 228329
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...