5

Jestクライアントを使用してJavaサーバー経由でアクセスしているelasticsearchサーバーがあり、ドキュメントの複数のフィールドを毎回更新する最良の方法を探していました。

これまでのドキュメントを調べたところ、次の2つの方法があることがわかりました。

  1. スクリプトによる部分的な更新: 複数のフィールドの更新には適していないと思います (変更されたフィールドがわからないため)。
  2. ドキュメント全体の更新: ドキュメント全体のインデックスを再作成します。

私の質問は、Jest がスクリプトを介してのみ更新を提供することを知って、ドキュメント全体を更新するにはどうすればよいですか?

ドキュメントを削除し、更新されたバージョンをインデックス化するのが最善の方法ですか?

4

1 に答える 1

6

あなたも開いたgithubの問題ですでにこれに答えていますが、もう一度:

リンクした 2 番目の方法 (ドキュメント全体の更新) を使用する必要があります。そのための特別な API はありません。通常のインデックス リクエストです。そのため、更新したいドキュメントのIndexに対してリクエストを送信するだけでそれを行うことができます。id

たとえば、 index people、 type food、 id内の Elasticsearch で既にインデックスが作成されている以下のドキュメントがあるとし9ます。

{"user": "kramer", "fav_food": "jello"}

次に、次のようにします。

String source = "{\"user\": \"kramer\", \"fav_food\": \"pizza\"}";
JestResult result = client.execute(
            new Index.Builder(source)
                    .index("people")
                    .type("food")
                    .id(9)
                    .build()
    );
于 2015-05-14T09:17:35.477 に答える