弹性搜索根据术语聚合结果使用范围聚合



我在SQL格式中的问题非常简单,但我可以将其转换为弹性聚合格式

假设我想要弹性搜索中 blew 查询的结果

SELECT Foo.Type,COUNT(*) FROM Foo GROUP BY Foo.Type HAVING SUM(Foo.Price) > 20 AND SUM(Foo.Price) < 25

弹性中是否有任何聚合组合可以响应此类查询?

值得一提的是,第一组 (Foo.Type( 的结果大于最大弹性聚合大小 (10000(

我的数据是:


身份证件类型价格

1 蓝色 10

2 蓝色 10

3 蓝色 5

4 红 15

我的结果应该是这样的:


蓝色 3

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

你可以像下面这样做

{
  "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" 
                    }
                }
      }
    }
  }
}

最新更新