首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >聚合或多个聚合的Elasticsearch聚合

聚合或多个聚合的Elasticsearch聚合
EN

Stack Overflow用户
提问于 2017-04-12 02:49:47
回答 2查看 52关注 0票数 0
代码语言:javascript
复制
{
  "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"
        }
       }
      }
    ]
   }

  }
}

这将返回匹配的项,还会给我聚合结果。聚合是按国家/地区代码分组的视图和共享的总和。

但我想要另一个sum聚合。我想要“总金额”和“总股份”,我怎么才能做到呢?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2017-04-12 03:36:19

在最顶层添加两个额外的聚合应该可以做到这一点:

代码语言:javascript
复制
{
  "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"
        }
       }
      }
    ]
   }

  }
}
票数 1
EN

Stack Overflow用户

发布于 2017-04-12 04:14:02

代码语言:javascript
复制
{
  "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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43353995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档