ElasticSearch java API - 聚合查询

本文详细介绍了如何使用Elasticsearch的Java API进行聚合查询,包括group by/count、多字段聚合、max/min/sum/avg计算以及聚合结果排序。通过实例展示了SQL与ES API的对应转换,帮助读者理解和掌握Elasticsearch的聚合操作。
摘要由CSDN通过智能技术生成
  1. },

  2. “low”: {

  3. “type”: “long”

  4. },

  5. “date”: {

  6. “format”: “strict_date_optional_time||epoch_millis”,

  7. “type”: “date”

  8. },

  9. “close”: {

  10. “type”: “long”

  11. }

  12. },

  13. “_all”: {

  14. “enabled”: false

  15. }

  16. }

  17. }

索引中的全部数据:

name age salary team position
james 33 3000 cav sf
irving 25 2000 cav pg
curry 29 1000 war pg
thompson 26 2000 war sg
green 26 2000 war pf
garnett 40 1000 tim pf
towns 21 500 tim c
lavin 21 300 tim sg
wigins 20 500 tim sf

首先,初始化Builder:

SearchRequestBuilder sbuilder = client.prepar

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Elasticsearch Java API 中的 Aggregation API 来实现聚合查询某一字段分组的数量。具体步骤如下: 1. 创建一个 SearchRequest 对象,并设置索引及查询条件: ``` SearchRequest searchRequest = new SearchRequest("index_name"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.matchAllQuery()); ``` 2. 创建一个 TermsAggregationBuilder 对象,并设置聚合字段: ``` TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms("group_by_field") .field("field_name") .size(10); // 设置返回结果的数量 ``` 3. 将聚合对象添加到 SearchSourceBuilder 中: ``` searchSourceBuilder.aggregation(aggregationBuilder); ``` 4. 执行查询,并处理返回结果: ``` searchRequest.source(searchSourceBuilder); SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT); Terms termsAggregation = response.getAggregations().get("group_by_field"); for (Terms.Bucket bucket : termsAggregation.getBuckets()) { String key = bucket.getKeyAsString(); long count = bucket.getDocCount(); System.out.println("Key: " + key + ", Count: " + count); } ``` 以上代码中,`client` 是一个 Elasticsearch 客户端对象,通过 `response.getAggregations().get("group_by_field")` 获取到聚合结果对象,然后遍历 Buckets 获取每个分组的 key 和 count。 需要注意的是,这里使用的是 TermsAggregationBuilder 对象来实现分组聚合查询,如果需要根据其他条件进行聚合查询,则需要使用其他类型的 AggregationBuilder 对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值