es java 部分更新_使用Java在Elasticsearch中按查询更新

我目前正在使用Elasticsearch V2.3.1。我想在Java中使用以下Elasticsearch查询。

POST /twitter/_update_by_query

{

"script": {

"inline": "ctx._source.List = [‘Item 1’,’Item 2’]”

},

"query": {

"term": {

"user": "kimchy"

}

}

}

上面的查询搜索名为“

kimchy”的“用户”,并使用给定值更新“列表”字段。该查询同时更新多个文档。我在https://www.elastic.co/guide/en/elasticsearch/client/java-

api/2.3/java-docs-

update.html上了解了有关Java的Update API,但找不到我想要的东西。Java的Update

API仅讨论一次更新单个文档。有什么办法可以更新多个文档?抱歉,如果我缺少明显的内容。感谢您的时间。

更新:

我尝试了以下Java代码:

Client client = TransportClient.builder().addPlugin(ReindexPlugin.class)

.build().addTransportAddress(new InetSocketTransportAddress(

InetAddress.getByName("127.0.0.1"), 9300));

UpdateByQueryRequestBuilder ubqrb = UpdateByQueryAction.INSTANCE

.newRequestBuilder(client);

Script script = new Script("ctx._source.List = [\"Item 1\",\"Item 2\"]");

//termQuery is not recognised by the program

BulkIndexByScrollResponse r = ubqrb.source("twitter").script(script)

.filter(termQuery("user", "kimchy")).execute().get();

因此,我如上所述编辑了Java程序,而Java不识别termQuery。我可以知道我在做什么错吗?谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值