2017-09-11 4 views
0

私の文書の中には、schoolというキーがあります。ドキュメントが:弾性検索他のキーに影響を与えずに単一のキーを挿入

{ 
    "id" : "123", 
    "name" : "Robert", 
    "school" : "Public" 
} 

ここで、schoolがすべてのドキュメントに存在しないとします。私はschoolキーを、デフォルトのStringでまだ存在しないすべてのドキュメントに挿入したいと思います。

私はElasticsearchのバージョン番号2.4.5を使用しています。どうしたらいいですか?一括アップデートを見ていますか?

答えて

0

これは明らかにupdate by query APIを使用します。あなたはschoolフィールドを持っているし、あなたが望むものは何でもデフォルト値に設定していないすべてのドキュメントを検索することができます:あなたがenable dynamic scriptingに必要

POST your-index/your-type/_update_by_query 
{ 
    "query": { 
    "bool": { 
     "must_not": { 
     "exists": { 
      "field": "school" 
     } 
     } 
    } 
    }, 
    "script": { 
    "inline": "ctx._source.school = 'dummy'" 
    } 
} 

注意して、ESサーバーを再起動します。

+0

ありがとうございます。私はこれが私が望むものだと確信しています。今私は 'script_exception'に直面しているので、インデックスに' inline'スクリプトを有効にする方法を見てみましょう。どうか私にこのことを指摘してもらえますが、OPが確実に解決され、データの更新に成功すると答えが受け入れられます。 –

+0

良い点、私はそれに応じて私の答えを更新しました。 – Val

+0

これは問題を解決しますが、誰かが 'server'でスクリプトの使用を有効にしたくない場合は、何らかの理由でかまいませんか?スクリプトを使用する際の代替手段はありますか? –

関連する問題