elasticsearch 如何获得设置了大小的聚合上唯一术语的总数?

lb3vh1jj  于 2023-01-16  发布在  ElasticSearch
关注(0)|答案(2)|浏览(138)

在ElasticSearch查询中使用Terms Aggregation时,结果会将存储桶限制为前10个项或大小参数上设置的值。例如:

{
  "aggs" : {
    "cities" : {
      "terms" : { 
        "field" : "city",
        "size": 20
      }
    }
  }
}

这个查询将给予前20个bucket及其计数,如何更改这个查询以了解唯一"city"项的总数,以便显示类似“* 显示73个城市中的前20个 *"的内容?

ntjbwcob

ntjbwcob1#

在同一个查询中可以请求Cardinality Aggregation。因此,在提供的示例中,我们将具有:

{
  "aggs" : {
    "cities" : {
      "terms" : { 
        "field" : "city",
        "size": 20
      }
    },
    "unique_cities": {
      "cardinality": {
        "field": "city"
      }
    }
  }
}

"aggregations"响应除了"cities"元素(包含buckets)外,还将包含"unique_cities"元素,其基数为:

"unique_cities": {
  "value": 73
}

本期在github上的署名:Return number of buckets for terms aggregation

qfe3c7zg

qfe3c7zg2#

平均评分和总评分计数

GET /user_data_factory/_search
{
  "aggs": {
    "avgRating": {
      "avg": {
        "field": "rating"
      }
    },
   "count": {
      "cardinality": {
        "field": "rating"
      }
    }
  }
}

相关问题