如何对汇总结果中的过滤器使用总和

时间:2018-10-19 11:12:04

标签: elasticsearch elasticsearch-5

我正在尝试从属于同一查询的一部分的汇总结果中获取经过过滤的总和值。在查询中,我得到宝马的结果:

      "key": "BMW",
      "doc_count": 1,
      "sum#showDays": {
        "value": 15
      }

我真正想要的是sum#showDays的值为10,因为BMW只参与了其中一场表演。

使用ES 5.6,文档结构和查询如下:

POST sum-test/sum-type?refresh
{
  "id": "1",
  "name": "USA",
    "motorshows": [
      {
        "name": "Detroit",
        "days": 10,
        "manufacturers": [
          {
            "name":  "Mercedes",
            "id": 1
          },
          {
            "name":  "BMW",
            "id": 2
          }      
        ]  
      },
      {
        "name": "LA",
        "days": 5,
        "manufacturers": [
          {
            "name":  "Mercedes",
            "id": 1
          },
          {
            "name":  "Ford",
            "id": 3
          }      
        ]  
      }      
    ]
}

post sum-test/_search?pretty=true&typed_keys=true
{
  "size": 1,
  "aggs": {
    "group_by_man_name": {
      "terms": {
        "field": "motorshows.manufacturers.name.keyword",
        "order": {"showDays": "desc"}
      },
      "aggs": {
        "showDays": {
          "sum": { "field": "motorshows.days" }          
        }          
      }
    }      
  }
}

0 个答案:

没有答案
相关问题