elasticsearch - 如何获取具有大小集的聚合中唯一术语的总数?
问题描述
在ElasticSearch 查询上使用术语聚合时,结果会将存储桶限制为前 10 项或在size参数上设置的值。例如:
{
"aggs" : {
"cities" : {
"terms" : {
"field" : "city",
"size": 20
}
}
}
}
此查询将为我提供前 20 个存储桶及其计数。如何更改此查询以了解唯一"city"
术语的总数,以便我可以呈现类似“显示 73 个前 20 个城市”的内容?
解决方案
可以在同一个查询上请求基数聚合。因此,在提供的示例中,我们将拥有:
{
"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
推荐阅读
- java - Spring通用存储库自动装配失败
- maven - 任何人都可以为 xmlparserv2.jar 提供 Maven 依赖项吗
- python - Gogs 钩子的秘密(无法上 python3)
- java - 如何使用 Java 中的 SSL 套接字确认握手已完成?
- python - TypeError:下一个不支持的可调用(
) - java - 有没有办法了解 spark 如何加载类路径以及以何种顺序?
- perl - Perl:使用 Getopt::Long 从命令行和 [piped STDIN|file] 获取参数
- c# - C# 比较两个包含小写文本的 byte[] 数组
- android - Android:从 Firebase 实时数据库的主线程中同步获取数据
- python - 计算给定列的排列出现次数