2017-10-20 22 views
0

私は、次のデータを持っている:Elasticsearchインデックスの特定のフィールドを更新するにはどうすればよいですか? Elasticsearchで

"hits": [ 
     { 
     "_index": "traffic", 
     "_type": "entry", 
     "_id": "922", 
     "_score": 1, 
     "_source": { 
      "Intensity": 0, 
      "tId": "9" 
     } 
     }, 
     { 
     "_index": "traffic", 
     "_type": "entry", 
     "_id": "2812", 
     "_score": 1, 
     "_source": { 
      "Intensity": 0, 
      "tId": "28" 
     } 
     } 

私は28に等しいtIdのため5にIntensityea¡qualを設定できますか?どの更新クエリを書きますか?

答えて

1

idのtld = 28は、である。だから、:

POST traffic/entry/2812/_update 
{ 
    "doc" : { 
     "Intensity" : 5 
    } 
} 

出典:スクリプトを有効にするためのElasticsearch Reference Documentation

+0

を含める必要があります。しかし、それは 'どこTID = 28'に基づいて更新することは可能でしょうか? – Dinosaurius

+0

いいえ、すぐに使えるものではありません。 https://github.com/yakaz/elasticsearch-action-updatebyquery –

0
client.updateByQuery({ 
     index : 'traffic', 
     type : 'entry', 
     body : { 
     query : { 
      match : { 
      tId : 28 
      } 
     }, 
     script : 
     {'inline': 
     'ctx._source.Intensity = params["Intensity"];', 
     lang : 'painless', 
     params : {Intensity: 5 } 
     } 
     } 
    }, (err, res) => { 
     if (err) { 
     reject(err); 
     } else { 
     resolve(res); 
     } 
    }); 

、あなたはelasticsearch.yamlファイルにscript.inline: true

+0

スクリプトを有効にするときは注意してください:https://www.elastic.co/guide/en/elasticsearch/reference/current/modules -scripting-security.html#modules-scripting-security-do-no-weaken –

関連する問題