Elasticsearch агрегатный фильтр - PullRequest
0 голосов
/ 12 октября 2018

Допустим, у меня есть следующие документы.

{ productId: 1, month: 'oct', sales: 3455 }
{ productId: 1, month: 'nov', sales: 123 }
{ productId: 1, month: 'dec', sales: 34213 }

{ productId: 2, month: 'oct', sales: 342 }
{ productId: 2, month: 'nov', sales: 1231 }
{ productId: 2, month: 'dec', sales: 232 }

Я пытаюсь выяснить запрос Elasticsearch для следующей агрегации.

Запрос: Группировать по productId, найти max sales для группы, только для тех групп, где продажа month nov превышает 1000.

Я могу создать запрос для Group By productId, find max sales per group

Но не удается выяснить, как отфильтровать группу (сегмент), где объем продаж месяца nov превышает 1000.

РЕДАКТИРОВАТЬ: Ниже приведен запрос без фильтра периодов.

{
  "size":0,
  "query":{
     "bool":{
        "must":[
           {
              "terms":{
                 "month":[ "oct", "nov", "dec" ]
              }
           }
        ]
     }
  },
  "aggs":{
     "byProductId":{
        "terms":{
           "field":"productId",
           "size":1000
        },
        "aggs":{
           "maxSales":{
              "max":{
                 "field":"sales"
              }
           }
        }
     },
     "count":{
        "cardinality":{
           "field":"productId"
        }
     }
  }
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...