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

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

我们稍微了解  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教程(四) elasticsearch head 插件安装使用
Elasticsearch教程(五) elasticsearch Mapping的创建
Elasticsearch教程Elasticsearch count 查询,Elasticsearch 查询是否存在
Elasticsearch教程Elasticsearch配置文件 — elasticsearch.yml
Elasticsearch教程(六) elasticsearch Client创建
Elasticsearch 好消息, X-Pack的开源:第一阶段完成
Elasticsearch教程Elasticsearch Java API创建Mapping,指定分词器
Elasticsearch教程(八) elasticsearch delete 删除数据(Java)
Elasticsearch 教程Elasticsearch部署阿里云集群,支持外网请求方式
Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询
最新文章
Java获取浏览器请求头(User-Agent),分析浏览器信息,系统信息的几种办法。 137027
最热文章
Java获取浏览器请求头(User-Agent),分析浏览器信息,系统信息的几种办法。 137027
支付扫码

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

查看我的收藏

正在加载... ...