2015-01-14 5 views
9

私は以下のようにElasticSearchに文書を保管しています。 _source:ElasticSearch:groovyスクリプトでネストされた値にアクセスする

{ 
"firstname": "John", 
"lastname": "Smith", 
"medals":[ 
      { 
      "bucket": 100, 
      "count": 1 
      }, 
      { 
      "bucket": 150, 
      "count": 2 
      } 
     ] 
    } 

私は、スクリプトメトリックの集計http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-scripted-metric-aggregation.htmlためdoc.firstnameを使用して文書内の文字列型の値にアクセスすることができます。

しかし、私はdoc.medals[0].bucket.

を使用してフィールド値を取得することはできませんよあなたは私を助けて、私は、ネストされたフィールド内の値にアクセスする方法を教えてくださいことはできますか?

答えて

9

ネストされたプロパティの_sourceを使用します。 Docにはメモリにロードされたフィールドがあります。ネストされたドキュメントはロードされない可能性があり、_sourceを使用してアクセスする必要があります。例えば

GET index/type 
    { 
    "aggs": { 
     "NAME": { 
     "scripted_metric": { 
     "init_script": "_agg['collection']=[]", 
     "map_script": "_agg['tr'].add(_source.propertry1.prop);", 
     "combine_script": "return _agg", 
     "reduce_script": "return _aggs" 
     } 
    } 
    }, 
    "size": 0 
} 
関連する問題