Elasticsearch: 配列内の既存のデータにデータを追加するにはどうすればよいですか?

作成日 2015年02月24日  ·  3コメント  ·  ソース: elastic/elasticsearch

やあ 、

以下の形式のElasticsearchに関するドキュメントがあります。

{{
「id」:1、
「名前」:「緑の扉」、
「価格」:12.50、
"タグ":["ホーム"、 "緑"]
}

ここで、同じドキュメントを「タグ」配列の新しい値で更新したいと思います。
新しい値は「黄色」です。

「黄色」を既存のドキュメントに更新すると、マイドキュメントは次のように表示されます。

{{
「id」:1、
「名前」:「緑の扉」、
「価格」:12.50、
"タグ":["ホーム"、 "緑"、 "黄色"]
}

質問:新しい値を既存の値とマージする方法は?
誰かがこれについて私を案内してくれますか?

全てのコメント3件

ドキュメントのインデックスを再作成するだけで、ドキュメントが更新されます。 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-index_.htmlを参照して

こんにちはMarkwalkom、

ドキュメントのインデックスを再作成すると、古い値が新しい値に上書き/更新されます。
つまり、インデックスを再作成するか、update and upsert apiを呼び出した後、次のjsonが表示される可能性があります。

{{
「id」:1、
「名前」:「緑の扉」、
「価格」:12.50、
"タグ":["黄色"]
}

出力jsonで、配列タグから古い値を失いました
"タグ":["ホーム"、 "緑"]

Java Apiは、既存のドキュメントを更新するか、終了しない場合は新しいドキュメントを作成します。

IndexRequest indexRequest = new IndexRequest( "user"、 "test"、 "1")
.source(builder);
UpdateRequest updateRequest = new UpdateRequest( "user"、 "test"、 "1")
.doc(ビルダー)
.upsert(indexRequest);
client.update(updateRequest).get();

これはまさに舞台裏で起こっていることです。 更新APIは、以前のドキュメントを取得し、値をマージし、完全に新しいドキュメントにインデックスを付けます。

ところで、メーリングリストで質問してください。 このスペースは、問題または機能のリクエスト用です。

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

malpani picture malpani  ·  3コメント

clintongormley picture clintongormley  ·  3コメント

martijnvg picture martijnvg  ·  3コメント

rjernst picture rjernst  ·  3コメント

DhairyashilBhosale picture DhairyashilBhosale  ·  3コメント