弹性搜索使用范围聚合,基于术语聚合结果

我的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

如果有人可以帮助我,我将不胜感激。 谢谢

yu8023fei 回答:弹性搜索使用范围聚合,基于术语聚合结果

您可以按照以下步骤进行操作

{
  "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" 
                    }
                }
      }
    }
  }
}
本文链接:https://www.f2er.com/3045836.html

大家都在问