現在、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」という名前の「user」を検索し、指定された値で「List」フィールドを更新します。このクエリは、複数のドキュメントを同時に更新します。ここで Java の更新 API について読みましたhttps://www.elastic.co/guide/en/elasticsearch/client/java-api/2.3/java-docs-update.htmlが、探していたものが見つかりませんでした. Update API for Java は、一度に 1 つのドキュメントを更新することについてのみ説明します。複数のドキュメントを更新する方法はありますか? 明らかな何かが欠けている場合は申し訳ありません。お時間をいただきありがとうございます。
アップデート:
以下の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 によって識別されません。ここで私が間違っていることを知ってもいいですか?ありがとう。