2

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/*"
          }
        }
      }
}

明らかな何かが欠けている場合は申し訳ありません。ありがとうございました。

4

1 に答える 1