2013-10-24 26 views
10

elasticsearchの特定のフィールド値を更新して、他のフィールドを上書きすることは可能ですか? ?elasticsearchの特定のフィールド値のみを更新する

+0

は、私は私の答えは役に立ちましたかどうかを知ることはできますか? – javanna

+0

はい、ありがとうhelp.私はスクリプト形式を使用し、[更新api](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-update.html) –

+0

答えを受け入れるには... – javanna

答えて

-1

次の操作を実行できます。

  • 文書
  • あなたのフィールドを更新しますが、あなたならば、文書が戻っ

それだけでSolrの

に同じだ書きます(既存のIDを持つ)新しい文書を書き、あなたが更新したい1つのフィールドだけを記入します。 leドキュメント(他のすべてのフィールド)は上書きされます

+0

elasticsearch [update api](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-update.html)を参照してください。文書全体を提出する必要がありますが、部分的な文書やスクリプトを提出することができます。 – javanna

12

はい、Elasticsearchは部分的な更新をサポートします。それはあなたが提出することができることを意味します

既存の文書の上に実行されるスクリプトは、を見てください、既存の

  • とマージされます部分文書、 update api。 どちらの場合も、基礎となるluceneライブラリの仕組みにより、更新されるドキュメントが取得され、変更が適用され、古いドキュメントが新しいドキュメントで上書きされるということが起こります。最終的には実際には文書の完全な書き換えになりますが、デフォルトで有効になっている_source fieldを無効にしない限り、文書全体を送信する必要はありません。これは、あなたが全体を検索できるフィールドです変更を適用するために必要なものです。この回答へのcodebased貢献として

  • +0

    今後もこの質問をご覧ください。http://stackoverflow.com/questions/28937946/elasticsearch-particial-update-of-not-indexed-field –

    4

    、次のクエリを使用することができる。

    POST /index/type/100100471/_update 
    { 
        "doc" : { 
         "yourProperty" : 10000 
        } 
    } 
    

    このクエリはyourPropertyプロパティを更新します。

    その結果、この応答が表示されます。

    { 
        "_index": "index", 
        "_type": "type", 
        "_id": "100100471", 
        "_version": 1, 
        "_shards": { 
         "total": 0, 
         "successful": 1, 
         "failed": 0 
        } 
    }