我想用一個特定的字段使用Java Api更新我的一些索引數據。我已經提到這個文件https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-update.html並創建了一個java程序。我的Java程序如下所示:使用Java在elasticsearch中更新多個文檔。我正在使用Elasticsearch 2.3.2
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/*"
}
}
}
}
很抱歉,如果我失去了一些東西明顯。謝謝。
這個答案可能有幫助:http://stackoverflow.com/a/37042003/4604579 – Val
@Val我提到你的答案,現在我可以通過使用「termquery」來更新多個文檔。但我必須使用「通配符查詢」來更新與模式匹配的多個文檔。我已經提到這個鏈接:https://www.elastic.co/guide/en/elasticsearch/client/java-api/1.6/wildcard.html,但它不顯示如何在java中使用通配符 – Rose