Как использовать сумму с фильтром из результата агрегации - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь получить отфильтрованное значение суммы из результата агрегации, который является частью того же запроса.В запросе я получаю для BMW результат:

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

Где я на самом деле хочу, это значение суммы # 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" }          
        }          
      }
    }      
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...