やあ 、
以下の形式のElasticsearchに関するドキュメントがあります。
{{
「id」:1、
「名前」:「緑の扉」、
「価格」:12.50、
"タグ":["ホーム"、 "緑"]
}
ここで、同じドキュメントを「タグ」配列の新しい値で更新したいと思います。
新しい値は「黄色」です。
「黄色」を既存のドキュメントに更新すると、マイドキュメントは次のように表示されます。
{{
「id」:1、
「名前」:「緑の扉」、
「価格」:12.50、
"タグ":["ホーム"、 "緑"、 "黄色"]
}
質問:新しい値を既存の値とマージする方法は?
誰かがこれについて私を案内してくれますか?
ドキュメントのインデックスを再作成するだけで、ドキュメントが更新されます。 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は、以前のドキュメントを取得し、値をマージし、完全に新しいドキュメントにインデックスを付けます。
ところで、メーリングリストで質問してください。 このスペースは、問題または機能のリクエスト用です。