2017-04-11 194 views
0
{ 
    "aggs": { 
    "by_countryCode": { 
     "terms": { 
      "field":"countryCode.keyword", 
      "size": 100 
     }, 
     "aggs": { 
     "views": {"sum": {"field": "views"}}, 
     "shares": {"sum": {"field": "shares"}} 
     } 
    } 
    }, 
    "query": { 
    "bool": { 
    "must": [ 
     { "match": { "userId": 1 } }, 
     { "match": { "artistId": 1001 }}, 
     { "range": { 
     "date" : { 
      "gte" : "20170310", 
      "lte" : "20170312" 
     } 
     } 
     } 
    ] 
    } 

    } 
} 

這將返回匹配的項目,也給我的聚合結果。聚合是國家代碼中視圖和份額組的總和。Elasticsearch聚合或多重聚合

但我想要另一個總和聚合。我也想要「總數」和「總份額」,我怎麼能這樣做?

謝謝!

回答

1

在最頂層添加兩個額外的聚合應該這樣做:

{ 
    "aggs": { 
    "by_countryCode": { 
     "terms": { 
      "field":"countryCode.keyword", 
      "size": 100 
     }, 
     "aggs": { 
     "views": {"sum": {"field": "views"}}, 
     "shares": {"sum": {"field": "shares"}} 
     } 
    }, 
    "total_views": { 
     {"sum": {"field": "views"}} 
    }, 
    "total_shares": { 
     {"sum": {"field": "shares"}} 
    }, 
    "query": { 
    "bool": { 
    "must": [ 
     { "match": { "userId": 1 } }, 
     { "match": { "artistId": 1001 }}, 
     { "range": { 
     "date" : { 
      "gte" : "20170310", 
      "lte" : "20170312" 
     } 
     } 
     } 
    ] 
    } 

    } 
} 
0
{ 
    "aggs": { 
    "by_countryCode": { 
     "terms": { 
      "field":"countryCode.keyword", 
      "size": 100 
     }, 
     "aggs": { 
     "views": {"sum": {"field": "views"}}, 
     "shares": {"sum": {"field": "shares"}} 
     } 
    }, 
    "total_views": { 
    "sum": {"field": "views"} 
    }, 
    "total_shares": { 
    "sum": {"field": "shares"} 
    } 

    }, 
    "query": { 
    "bool": { 
    "must": [ 
     { "match": { "userId": 1 } }, 
     { "match": { "artistId": 1001 }}, 
     { "range": { 
     "date" : { 
      "gte" : "20170310", 
      "lte" : "20170312" 
     } 
     } 
     } 
    ] 
    } 

    } 
} 

謝謝,羅馬!

在你的代碼的幫助下,我做了一些小的改變。有用!