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();
}
}
このプログラムは、スクリプトに基づいて 1 つのドキュメントを更新しています。「pibindex」はインデックスの名前、「SearchTech」はインデックスのタイプ、「http://www.sea.com/bundle」はドキュメントの ID です。「 http://www.sea.com/bundle 」のようなパターンに一致する新しいフィールド「wiki_collection」:true で複数のドキュメントを更新したいと考えています。ワイルドカード クエリを使用したい。
Javaでこのelasticsearchクエリを実装しようとしています:
POST /pibindex2/_update_by_query
{
"script": {
"inline": "ctx._source.wiki_collection=true"
},
"query": {
"wildcard": {
"url": {
"value": "http://www.sea.com/bundle/*"
}
}
}
}
明らかな何かが欠けている場合は申し訳ありません。ありがとうございました。