`

Elasticsearch多字段聚合

 
阅读更多

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脚本实现先聚合后过滤

    在 Elasticsearch (ES) 中,聚合(Aggregations)是一种强大的功能,允许我们对索引中的数据进行统计分析,如求平均值、计数、分桶等。而在某些场景下,我们可能需要在聚合的基础上进一步过滤结果,即基于聚合的结果...

    elasticsearch聚合值过滤

    在 Elasticsearch(ES)中,聚合(Aggregations)是一种强大的数据汇总工具,允许用户对索引中的数据进行分组和统计分析。而“elasticsearch聚合值过滤”是ES聚合功能的一个高级应用场景,它允许我们根据聚合计算出...

    elasticsearch查询模版-模糊查询,多字段查询,相似度计算等

    Elasticsearch(简称ES)是一个基于Apache Lucene构建的开源、分布式、RESTful风格的搜索和数据分析引擎。它允许你以前所未有的速度和规模,即时地存储、搜索和分析大量数据。Elasticsearch通常用于全文搜索、结构化...

    java使用elasticsearch分组进行聚合查询过程解析

    Java 使用 Elasticsearch 进行分组聚合查询过程解析 Java 使用 Elasticsearch 进行分组聚合查询是一个常见的需求,特别是在大数据处理和数据分析领域。Elasticsearch 提供了强大的聚合功能,可以对数据进行分组、...

    Elasticsearch聚合 之 Terms

    Elasticsearch中的Terms聚合是一种常用的聚合方式,用于对文档中的某个字段进行分组统计。Terms聚合可以对文档中的某个字段进行分组,并统计每个组中的文档数量。 在Elasticsearch中,Terms聚合可以使用以下方式...

    数据聚合的艺术:如何在 Elasticsearch 中使用聚合?

    ### 数据聚合的艺术:深入解析 Elasticsearch 中的聚合技术 Elasticsearch 作为一个强大的搜索与分析引擎,在处理海量数据方面表现出色。其内置的聚合功能更是数据分析领域的重要工具之一。本篇文章将详细探讨 ...

    elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载

    由于其出色的性能和丰富的功能,Elasticsearch被广泛应用于日志分析、网站搜索、推荐系统等多个领域。 ### Elasticsearch 6.2.2版本特点 Elasticsearch 6.x系列相较于5.x版本有了显著的改进和增强,尤其是在性能...

    ES查询客户端,elasticsearch可视化工具 elasticsearch查询客户端

    Elasticsearch(简称ES)是一款强大的开源搜索引擎,广泛应用于数据检索、分析和管理。作为分布式、RESTful风格的搜索和数据分析引擎,Elasticsearch能够提供实时、高可用性以及可扩展的搜索功能。在进行日常的数据...

    ElasticSearch官方测试数据

    Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene库构建,被广泛用于大数据分析、日志聚合、实时搜索和索引等场景。官方提供的测试数据集是检验Elasticsearch功能、性能和稳定性的关键资源,可以帮助...

    elasticsearch5.6以上version通用java API

    在"elasticsearch5.6以上version通用java API"中,我们将会探讨如何利用Java编写工具类,以覆盖更全面的操作,如映射创建、批量插入、聚合查询以及模糊和精确查询。 1. **映射创建**:Elasticsearch的映射(Mapping...

    基于.netcore搜索封装ElasticSearch.zip

    5. **高级查询**: Elasticsearch支持丰富的查询语法,如匹配查询、范围查询、布尔查询等,以及聚合功能,如术语聚合、桶聚合等,可用于复杂的数据分析和报表生成。 6. **性能优化**: 为了提升性能,可以设置映射...

    ES 聚合查询结果转换成相应的List对象

    ES 聚合查询结果转换成相应的对象集合,ES 聚合查询结果转换成相应的对象集合

    《ElasticSearch入门到实战》电子书,从入门到进阶实战项目的教程文档,框架SpringBoot框架整合ES.zip

    4. **聚合分析**:学习如何使用 Elasticsearch 的聚合功能进行数据统计和分析,如术语聚合、范围聚合、统计聚合等。 5. **映射与分析**:了解字段映射的重要性,以及如何设置分析器进行文本分词,以满足不同的搜索...

    elasticsearch-6.8.0+elasticsearch-analysis-ik-6.8.0 .zip

    **Elasticsearch 6.8.0:** Elasticsearch 是一个开源的全文搜索引擎,基于 Lucene 库,提供分布式、实时、可扩展的数据搜索和分析能力。在6.8.0版本中,Elasticsearch 提供了强大的索引管理和查询功能,支持多种...

    elasticsearch-5.6.3.zip

    5. 多字段搜索:Elasticsearch允许对多个字段进行复杂的查询,包括短语匹配、模糊匹配、范围查询等,同时支持布尔逻辑组合,提供灵活的查询能力。 6. 集群管理:Elasticsearch集群可以动态添加或移除节点,自动平衡...

    从SQLServer收集事件并将其保存到Elasticsearch以便进行进一步分析

    还可以利用Elasticsearch的聚合功能进行统计分析,找出问题的根源。 总的来说,从SQL Server收集事件并将其保存到Elasticsearch是一个涉及数据库监控、数据传输和大数据分析的过程。这需要对SQL Server、JavaScript...

    Elasticsearch2.4.4免安装下载

    4. **动态映射**: 当新类型的数据被索引时,Elasticsearch 可以自动创建映射(mapping),定义字段的数据类型,也可以手动配置。 5. **实时分析**: 数据一旦被索引,即可立即用于搜索和分析,无需等待批处理过程。 ...

Global site tag (gtag.js) - Google Analytics