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

我们稍微了解  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 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类似的运算。

当然也支持字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 ElasticsearchJava API 来实现 es8.x script_score 定制搜索结果的分数。具体实现步骤如下: 1. 创建一个 SearchRequest 对象,设置索引名称和查询条件。 2. 创建一个 ScriptScoreFunctionBuilder 对象,设置脚本语言和脚本内容。 3. 将 ScriptScoreFunctionBuilder 对象添加到 FunctionScoreQueryBuilder 中。 4. 创建一个 SearchSourceBuilder 对象,设置查询条件和排序方式。 5. 将 FunctionScoreQueryBuilder 对象添加到 SearchSourceBuilder 中。 6. 执行查询并获取结果。 以下是示例代码: ``` SearchRequest searchRequest = new SearchRequest("index_name"); QueryBuilder queryBuilder = QueryBuilders.matchQuery("field_name", "search_text"); ScriptScoreFunctionBuilder scriptScoreFunctionBuilder = new ScriptScoreFunctionBuilder( new Script(ScriptType.INLINE, "painless", "doc['field_name'].value * factor", Collections.singletonMap("factor", 2.0))); FunctionScoreQueryBuilder functionScoreQueryBuilder = QueryBuilders.functionScoreQuery(queryBuilder, scriptScoreFunctionBuilder); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(functionScoreQueryBuilder); searchSourceBuilder.sort(SortBuilders.scoreSort()); SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); ``` 其中,ScriptScoreFunctionBuilder 中的脚本语言为 painless,脚本内容为 doc['field_name'].value * factor,表示将文档中的某个字段的值乘以一个因子作为分数。FunctionScoreQueryBuilder 中的 queryBuilder 表示查询条件,scriptScoreFunctionBuilder 表示定制分数的方式。最后,将 FunctionScoreQueryBuilder 对象添加到 SearchSourceBuilder 中,并执行查询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值