Elasticsearch:我可以只返回存储桶agg的基数,而不返回所有存储桶吗?

时间:2019-03-08 18:05:30

标签: elasticsearch aggregation cardinality

接受以下查询和结果,

    POST index/_search
    {
      "size": 0,
      "aggs": {
        "perDeviceAggregation": {
          "terms": {
            "field": "deviceID"
          },
          "aggs": {
            "score_avg": {
              "avg": {
                "field": "device_score" 
              }
            }
          }
        },
        "count":{
          "cardinality": {
            "field": "deviceID"
          }
        }
      }
    }

结果:

    "aggregations": {
        "aads": {
          "doc_count_error_upper_bound": 0,
          "sum_other_doc_count": 0,
          "buckets": [
            {
              "key": "aa",
              "doc_count": 3,
              "score_avg": {
                "value": 3.8
              }
            },
           {
              "key": "bb",
              "doc_count": 1,
              "score_avg": {
                "value": 3.8
              }
            }
          ]
        },
        "count": {
          "value": 2
        }
      }

太好了。但是在我的情况下,我并不真正在乎每个存储桶的信息。我只想知道#个桶。类似于以下内容:

"aggregations": {
    "aads": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "bucket_count": 2
    }
  }

在Elasticsearch中这可能吗?

编辑:

您可能想知道,如果我不在乎存储桶中的内容,为什么要计算平均值(使用项而不是基数来限制)。我确实使用平均值进行范围汇总。我的实际问题就像下面这样:简化了上面的问题。

 POST index/_search
    {
      "size": 0,
      "aggs" : {
        "mos_over_time" : {
          "range" : {
            "field" : "device_score",
            "ranges" : [
              { "from" : 0.0, "to" : 2.6 },
              { "from" : 2.6, "to" : 4.0 },
              { "from" : 4.0 }
            ]
          },
          "aggs": {
            "perDeviceAggregation": {
              "terms": {
                "field": "deviceID"
              },
              "aggs": {
                "score_avg": {
                  "avg": {
                    "field": "device_score" 
                  }
                }
              }
            },
            "count":{
              "cardinality": {
                "field": "deviceID"
              }
            }
          }
        }
      }
    }

0 个答案:

没有答案