ES中的聚合被分为两大类:Metric和bucket。
在实际的开发工作过程中,会根据不同业务选择不同聚合总类。相对于REST的请求风格,javaApi方面的资料就比较欠缺。官方API都比较片面,实际应用中,要自己去多去尝试,多去组合验证。这点确实是比较累。
已近期的一个业务举例:
需求:根据用户ID来分组获取用户发布的微博,并统计微博的讨论量和转发量等等指标信息,还要根据不同指标信息做相关排序。
从需求描述中可以获悉,用户ID是一个大桶(bucket),讨论量和转发量是嵌套在这个大桶中的小桶。之后再根据不同的小桶做相关排序需求。
部分示例代码如下:
SearchRequestBuilder searcher = getTransportClient().prepareSearch(indice.split(",")) ;
searcher.setSearchType(SearchType.COUNT);
searcher.setQuery(getFilteredQueryBuilder(query)) ;
//约束好不同的桶命名
TermsBuilder groupTermsBuilder = AggregationBuilders.terms("groupTerms").field("mediaUsers").size(size);
TermsBuilder docTermsBuilder = AggregationBuilders.terms("docTerms").field("docId");
TermsBuilder polarTermsBuilder = AggregationBuilders.terms("polarTerms").field("polar");
SumBuilder commentsTermsBuilder = AggregationBuilders.sum("commentsTerms").field("commentCount"); //评论数
SumBuilder repostsTermsBuilder = AggregationBuilders.sum("repostsTerms").field("repostsCount"); //转发数
SumBuilder activeTermsBuilder = AggregationBuilders.sum("activeTerms").field("activeCount"); //互动数
SumBuilder exposureTermsBuilder = AggregationBuilders.sum("exposureTerms").field("exposureCount") ; //曝光指数
//开始嵌套组装不同的桶
groupTermsBuilder.subAggregation(docTermsBuilder)
.subAggregation(polarTermsBuilder)
.subAggregation(commentsTermsBuilder)
.subAggregation(repostsTermsBuilder)
.subAggregation(activeTermsBuilder)
.subAggregation(exposureTermsBuilder) ;
searcher.addAggregation(groupTermsBuilder.order(order)) ;
//之后从大桶开始做遍历,获取相关聚合指标信息
while(groupBucketIt.hasNext()){
IEAnaysisData anaysisData = new IEAnaysisData() ;
Bucket groupBucket = groupBucketIt.next();
.......
附上相关资料链接:http://www.cnblogs.com/xing901022/p/4944043.html,以方便了解的更深刻。
相关推荐
在 Elasticsearch (ES) 中,聚合(Aggregations)是一种强大的功能,允许我们对索引中的数据进行统计分析,如求平均值、计数、分桶等。而在某些场景下,我们可能需要在聚合的基础上进一步过滤结果,即基于聚合的结果...
在 Elasticsearch(ES)中,聚合(Aggregations)是一种强大的数据汇总工具,允许用户对索引中的数据进行分组和统计分析。而“elasticsearch聚合值过滤”是ES聚合功能的一个高级应用场景,它允许我们根据聚合计算出...
Elasticsearch(简称ES)是一个基于Apache Lucene构建的开源、分布式、RESTful风格的搜索和数据分析引擎。它允许你以前所未有的速度和规模,即时地存储、搜索和分析大量数据。Elasticsearch通常用于全文搜索、结构化...
Java 使用 Elasticsearch 进行分组聚合查询过程解析 Java 使用 Elasticsearch 进行分组聚合查询是一个常见的需求,特别是在大数据处理和数据分析领域。Elasticsearch 提供了强大的聚合功能,可以对数据进行分组、...
Elasticsearch中的Terms聚合是一种常用的聚合方式,用于对文档中的某个字段进行分组统计。Terms聚合可以对文档中的某个字段进行分组,并统计每个组中的文档数量。 在Elasticsearch中,Terms聚合可以使用以下方式...
### 数据聚合的艺术:深入解析 Elasticsearch 中的聚合技术 Elasticsearch 作为一个强大的搜索与分析引擎,在处理海量数据方面表现出色。其内置的聚合功能更是数据分析领域的重要工具之一。本篇文章将详细探讨 ...
由于其出色的性能和丰富的功能,Elasticsearch被广泛应用于日志分析、网站搜索、推荐系统等多个领域。 ### Elasticsearch 6.2.2版本特点 Elasticsearch 6.x系列相较于5.x版本有了显著的改进和增强,尤其是在性能...
Elasticsearch(简称ES)是一款强大的开源搜索引擎,广泛应用于数据检索、分析和管理。作为分布式、RESTful风格的搜索和数据分析引擎,Elasticsearch能够提供实时、高可用性以及可扩展的搜索功能。在进行日常的数据...
Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene库构建,被广泛用于大数据分析、日志聚合、实时搜索和索引等场景。官方提供的测试数据集是检验Elasticsearch功能、性能和稳定性的关键资源,可以帮助...
在"elasticsearch5.6以上version通用java API"中,我们将会探讨如何利用Java编写工具类,以覆盖更全面的操作,如映射创建、批量插入、聚合查询以及模糊和精确查询。 1. **映射创建**:Elasticsearch的映射(Mapping...
5. **高级查询**: Elasticsearch支持丰富的查询语法,如匹配查询、范围查询、布尔查询等,以及聚合功能,如术语聚合、桶聚合等,可用于复杂的数据分析和报表生成。 6. **性能优化**: 为了提升性能,可以设置映射...
ES 聚合查询结果转换成相应的对象集合,ES 聚合查询结果转换成相应的对象集合
4. **聚合分析**:学习如何使用 Elasticsearch 的聚合功能进行数据统计和分析,如术语聚合、范围聚合、统计聚合等。 5. **映射与分析**:了解字段映射的重要性,以及如何设置分析器进行文本分词,以满足不同的搜索...
**Elasticsearch 6.8.0:** Elasticsearch 是一个开源的全文搜索引擎,基于 Lucene 库,提供分布式、实时、可扩展的数据搜索和分析能力。在6.8.0版本中,Elasticsearch 提供了强大的索引管理和查询功能,支持多种...
5. 多字段搜索:Elasticsearch允许对多个字段进行复杂的查询,包括短语匹配、模糊匹配、范围查询等,同时支持布尔逻辑组合,提供灵活的查询能力。 6. 集群管理:Elasticsearch集群可以动态添加或移除节点,自动平衡...
还可以利用Elasticsearch的聚合功能进行统计分析,找出问题的根源。 总的来说,从SQL Server收集事件并将其保存到Elasticsearch是一个涉及数据库监控、数据传输和大数据分析的过程。这需要对SQL Server、JavaScript...
4. **动态映射**: 当新类型的数据被索引时,Elasticsearch 可以自动创建映射(mapping),定义字段的数据类型,也可以手动配置。 5. **实时分析**: 数据一旦被索引,即可立即用于搜索和分析,无需等待批处理过程。 ...