【发布时间】:2016-08-30 13:12:12
【问题描述】:
我目前使用的是 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 更新 API 的信息,但找不到我要找的东西。 Java 的更新 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 程序,但 termQuery 没有被 Java 识别。我可以知道我在这里做错了什么吗?谢谢。
【问题讨论】:
标签: java elasticsearch elasticsearch-java-api