Elasticsearch Global 、 Filters 和 Cardinality 聚合

网站建设3年前发布
11 00

此处将单记录一下 global 、 filterscardinality聚合操作。,global聚合是全局聚合,是对所有的文档进行聚合,而不受查询条件的限制。,global 聚合器只能作为顶级聚合器,因为将一个 global 聚合器嵌入另一个桶聚合器是没有意义的。,比如: 我们有50个文档,通过查询条件筛选之后存在10个文档,此时我想统计总共有多少个文档。是50个,因为global统计不受查询条件的限制。,定义一个多桶聚合,其中每个桶都与一个过滤器相关联。每个桶都会收集与其关联的过滤器匹配的所有文档。,比如: 我们总共有50个文档,通过查询条件筛选之后存在10个文档,此时我想统计 这10个文档中,出现info词语的文档有多少个,出现warn词语的文档有多少个。,类似于 SQL中的 COUNT(DISTINCT(字段)),不过这个是近似统计,是基于 HyperLogLog++ 来实现的。,我们有一组日志,每条日志都存在idmessage2个字段。此时根据message字段过滤出存在info warn的日志,然后进行统计:,Elasticsearch Global 、 Filters 和 Cardinality 聚合,运行结果,​​https://gitee.com/huan1993/spring-cloud-parent/blob/master/es/es8-api/src/main/java/com/huan/es8/aggregations/bucket/GlobalAndFiltersAggs.java​​,​https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-global-aggregation.html​

© 版权声明

相关文章