繁体   English   中英

通过聚合过滤 elasticsearch 查询

[英]filtering an elasticsearch query by aggregations

嗨,我的问题分为两个部分。 我有一个看起来像的数据集

{name: "foo", 
 contracts: [{size: 1}, {size: 3}]},
{name: "bar", 
 contracts: [{size: 100}, {size: 300}]}

使用指标聚合,我可以计算出所有项目的平均大小。 1+3+100+300 / 4,但是是否可以返回每个项目的平均合同大小?

我希望能够回来

{name: "foo", 
 averageContract: 2}, 
{name: "bar", 
 averageContract: 200}, 

另外是否有可能获得该值并对其进行过滤?

例如匹配 averageContract > 100?

尝试这个:

{
  "size": 0,
  "aggs": {
    "item": {
      "terms": {
        "field": "name.keyword",
        "size": 10
      },
      "aggs": {
        "averageContract": {
          "avg": {
            "field": "contracts.size"
          }
        },
        "selector_avg_contract": {
          "bucket_selector": {
            "buckets_path": {
              "avg": "averageContract"
            },
            "script": "params.avg > 100"
          }
        }
      }
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM