【发布时间】:2016-09-08 22:27:17
【问题描述】:
我想使用 Java Api 使用特定字段更新我的一些索引数据。我已经参考了这个文档https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-update.html 并创建了一个 java 程序。我的 Java 程序如下所示:
public class App {
public static void main(String[] args) throws Exception {
Client client = TransportClient.builder().build().addTransportAddress(
new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),
9300));
UpdateRequest updateRequest = new UpdateRequest("pibindex", "SearchTech",
"http://www.sea.com/bundle")
.script(new Script("ctx._source.default_collection = \"true\""));
client.update(updateRequest).get();
}
}
此程序正在根据脚本更新单个文档。 “pibindex”是我的索引的名称,“SearchTech”是我的索引的类型,“http://www.sea.com/bundle”是我的文档的 ID。我想用一个新字段 "wiki_collection":true 更新多个文档,它与 "http://www.sea.com/bundle" 之类的模式匹配。我想使用通配符查询。
我正在尝试用 Java 实现这个 elasticsearch 查询:
POST /pibindex2/_update_by_query
{
"script": {
"inline": "ctx._source.wiki_collection=true"
},
"query": {
"wildcard": {
"url": {
"value": "http://www.sea.com/bundle/*"
}
}
}
}
对不起,如果我遗漏了一些明显的东西。谢谢。
【问题讨论】:
-
这个答案可能会有所帮助:stackoverflow.com/a/37042003/4604579
-
@Val 我参考了您的答案,现在我可以使用“termquery”更新多个文档。但我必须使用“通配符查询”来更新与模式匹配的多个文档。我已经引用了这个链接:elastic.co/guide/en/elasticsearch/client/java-api/1.6/…,但它没有显示如何在 java 中使用通配符
标签: java elasticsearch querydsl elasticsearch-java-api