通过基数高的另一个字段的不同值对字段求和

时间:2019-12-01 17:56:10

标签: elasticsearch elasticsearch-aggregation

我有一个这样的文件:

{
    "_id": 1, 
    "factor": 100,
    "field_with_high_cardinality": 1000
}

我知道对于每个唯一的field_with_high_cardinalityfactor总是相同的。

我需要仅考虑sum的唯一(不同)值来计算factor字段的field_with_high_cardinality聚合。

我尝试为terms计算field_with_high_cardinality,然后为avg上的每个term计算factor(因为所有factor字段都相同, avg将给我risk字段)。然后平均sum_bucket

"aggs": {
    "terms_agg": {
      "terms": {
        "field": "field_with_high_cardinality",
        "size": 1000000
      },
      "aggs": {
        "avg_risks": {
          "avg": {
            "field": "factor"
          }
        }
      }
    },
    "sums":{
      "sum_bucket": {
        "buckets_path": "terms_agg.avg_risks"
      }
    }
}

但是由于我有很多field_with_high_cardinality值(几乎99%是唯一的),所以我遇到两个问题:

  1. 执行时间过长
  2. 所有risk_terms存储桶都作为响应的一部分返回,但我只需要sums字段。

0 个答案:

没有答案