2016-09-28 10 views
0

データは毎日更新されます。文書の変更の属性と新しいレコードの属性があります。既に存在する更新された値でデータを再索引付けし、新しいreocordを追加することは可能ですか? はいの場合は、どうか説明してください。文書を更新し、弾性検索で新しいフィールドを追加する

アップデートAPIはありますか?

私は任意のIDを渡していないです

このような
String json = getJsonMapper().writeValueAsString(data); 
    bulkRequestBuilder.add(getClient().prepareIndex(indexName, typeName).setSource(json)); 

をインデックス化しています。どのように私はこれを更新することができます。何が最善の方法です

答えて

0

Elasticsearchはカバーの下にApache Luceneを使用します。 Luceneの文書はimmutableです。

ご使用のケースに合わせてUpdate APIを使用できます。このAPIは削除と保存を行いますが、それはあなたに関係しません。ドキュメントの一部を更新することもできます。つまり、Elasticsearchは古いドキュメントを取得し、新しいドキュメントを生成し、古いドキュメントを削除して新しいドキュメントを保存します。

問題は、これがすべて動作するためには、同じIDを使用する必要があるということです。あなたがしなければ、Elasticsearchgenerateになります。つまり、新しい文書として保存されます。 Update APIにはIDが必要です。それ以外の場合、更新する内容はわかりません。

関連する問題