我的SQL格式问题很简单,但我可以将其转换为弹性聚合格式
假设我想要弹性搜索中引爆查询的结果
SELECT Foo.Type,COUNT(*) FROM Foo GROUP BY Foo.Type HAVING SUM(Foo.Price) > 20 AND SUM(Foo.Price) < 25
elastic中是否有任何聚合组合可以响应这些查询?
重要的是要提到第一组(Foo.Type)的结果大于最大弹性聚集大小(10000)
我的数据是:
ID类型价格
1蓝色10
2蓝色10
3蓝色5
4红色15
我的结果应该是这样的:
蓝色3
如果有人可以帮助我,我将不胜感激。 谢谢
答案 0 :(得分:0)
您可以按照以下步骤进行操作
{
"aggs": {
"byType": {
"terms": {
"field": "type"
},
"aggs": {
"price_sum": {
"sum": {
"field": "price"
}
},
"price_bucket_filter": {
"bucket_selector": {
"buckets_path": {
"totalPrice": "price_sum"
},
"script": "params.totalPrice > 20 && params.totalPrice< 25"
}
}
}
}
}
}