2015-01-14 14 views
9

Tôi có tài liệu được lưu trữ trong ElasticSearch như dưới đây. _source:ElasticSearch: truy cập tài liệu giá trị lồng nhau trong tập lệnh groovy

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

tôi có thể truy cập vào các giá trị kiểu chuỗi bên trong một tài liệu sử dụng doc.firstname cho kịch bản tập hợp số liệu http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-scripted-metric-aggregation.html.

Nhưng tôi không thể nhận được giá trị lĩnh vực sử dụng doc.medals[0].bucket.

bạn có thể vui lòng giúp tôi ra và cho tôi biết làm thế nào để truy cập vào các giá trị bên trong lĩnh vực lồng nhau?

Trả lời

9

Sử dụng _source cho thuộc tính lồng nhau. Tài liệu chứa các trường được tải trong bộ nhớ. Tài liệu lồng nhau có thể không được tải và phải được truy cập bằng _source.

Ví dụ:

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 
} 
Các vấn đề liên quan