2017-03-06 6 views
0

集計機能をエラスティックで使用すると、集計されたフィールドの値が取得されますが、そのフィールドの説明も取得する必要があります。我々は、我々のAPIの他の部分が後でそれを使用するので、を使用しなければならない。元の場合 は:我々のデータは次のようになります。Elasticsearchで集計する際の説明を取得する

私たちは私たちの応答は次のようになり sectors.idの上に集約
[{ 
    "id":"123" 
    "sectors":[{ 
    "id":"sector-1", 
    "name":"Automotive" 
    }] 
}, 
{ 
    "id":"123" 
    "sectors":[{ 
    "id":"sector-2", 
    "name":"Biology" 
    }] 
}] 

sectors.nameを取得する方法だけでなく、結果にはキーがあります

"aggregations": { 
    "sector": { 
     "doc_count_error_upper_bound": 0, 
     "sum_other_doc_count": 0, 
     "buckets": [ 
     { 
      "key": "sector-2", 
      "doc_count": 19672 
     }, 
     { 
      "key": "sector-1", 
      "doc_count": 11699 
     }] 
     } 
    } 

答えて

0

ネストされたフィールドはsectorsのように見えます。今、セクター名がセクターIDごとに一意であると仮定します。

あなたは、関連するキーを把握するためにsub-aggregationsを使用することができ

GET _search 
{ 
    "size": 0, 
    "aggs": { 
    "sectors": { 
     "nested": { 
     "path": "sectors" 
     }, 
     "aggs": { 
     "sector_id": { 
      "terms": { 
      "field": "sectors.id" 
      }, 
      "aggs": { 
      "sector_name": { 
       "terms": { 
       "field": "sectors.name" 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 
関連する問題