您的位置:首页 > 汽车 > 新车 > 商铺门面设计_企业贷款政策最新消息2022_企业网络营销策略分析案例_新闻发布最新新闻

商铺门面设计_企业贷款政策最新消息2022_企业网络营销策略分析案例_新闻发布最新新闻

2025/3/14 0:10:20 来源:https://blog.csdn.net/NIki_ya/article/details/140093326  浏览:    关键词:商铺门面设计_企业贷款政策最新消息2022_企业网络营销策略分析案例_新闻发布最新新闻
商铺门面设计_企业贷款政策最新消息2022_企业网络营销策略分析案例_新闻发布最新新闻

聚合查询的官网地址 

Aggregations | Elasticsearch Guide [7.0] | Elastic

聚合查询主要分为四类

Metrics Aggregations -- 指标聚合

Bucket Aggregations -- 桶聚合

Pipeline Aggregations -- 管道聚合

Matrix Aggregations -- 矩阵聚合

Metrics Aggregations

 Sum Aggregations 求和

相当于sql sum()函数

POST /sales/_search?size=0
{"query" : {"constant_score" : {"filter" : {"match" : { "type" : "hat" }}}},"aggs" : {"hat_prices" : { "sum" : { "field" : "price" } }}
}
AggregationBuilder aggBuilder = AggregationBuilders.sum("hat_prices").field("price");searchSourceBuilder.aggregation(aggBuilder);searchRequest.source(searchSourceBuilder);SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);Aggregations aggregations = searchResponse.getAggregations();Sum sumAgg = aggregations.get("hat_prices");
return (long) sumAgg.getValue();
Cardinality Aggregations 统计去重后行数

相当于sql 的count(distinct(0)) 函数使用

注意:只能求查询结果集的计数,聚合后的结果集的计数统计不了

POST /sales/_search?size=0
{"aggs" : {"type_count" : {"cardinality" : {"field" : "type"}}}
}
CardinalityAggregationBuilder aggBuilder = AggregationBuilders.cardinality("type_count").field("type");searchSourceBuilder.aggregation(aggBuilder);searchRequest.source(searchSourceBuilder);SearchResponse cardinality = client.search(searchRequest, RequestOptions.DEFAULT);
Cardinality aggResult = cardinality.getAggregations().get("type_count");
return aggResult.getValue();

 聚合之间能嵌套聚合

group by 和having 结合使用

使用了Mettics Aggregations 中的 terms aggregations 、sum aggregations和Pipeline Aggregations 中的 bucketSelector aggredations

聚合后的结果集计数,只能将size的值调整到较大值,获取桶的数量来获取计数结果

int size = result.getBuckets().size();

相当于sql

group by type
having sum(price) >= 100000
POST /sales/_search?size=0
"aggs": {"group_by_type": {"terms": {"field": "type","size": 100000 // 调整桶的大小},"aggs": {"sum_price": {"sum": {"field": "price"}},"having_sum_price": {"bucket_selector": {"buckets_path": {"_velue0": "sum_price"},"script": "params._value0 >= 100000"}}}}
searchSourceBuilder.aggregation(AggregationBuilders.terms("group_by_type").field("type").size(100000).subAggregation(AggregationBuilders.sum("sum_price").field("price")).subAggregation(PipelineAggregatorBuilders.bucketSelector("having_sum_price", new Script("params._value0 >= 100000"), "sum_price")));searchRequest.source(searchSourceBuilder);SearchResponse cardinality = client.search(searchRequest, RequestOptions.DEFAULT);Terms result = cardinality.getAggregations().get("group_by_type");

聚合分页查询

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com