Допустим, у меня есть следующие документы.
{ 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"
}
}
}
}