获取平均值聚合示例,最大值、最小值、求和类似

  1. public void aggregation(){
  2. RestHighLevelClient client = elasticClient.getRestHighLevelClient();
  3. SearchRequest searchRequest = new SearchRequest();
  4. SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
  5. TermsAggregationBuilder aggregation = AggregationBuilders.terms("by_sex")
  6. .field("sex.keyword"); //text类型不能用于索引或排序,必须转成keyword类型
  7. aggregation.subAggregation(AggregationBuilders.avg("avg_age")
  8. .field("age")); //avg_age 为子聚合名称,名称可随意
  9. searchSourceBuilder.aggregation(aggregation);
  10. searchRequest.source(searchSourceBuilder);
  11. SearchResponse searchResponse = null;
  12. try {
  13. searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
  14. } catch (IOException e) {
  15. e.printStackTrace();
  16. }
  17. Aggregations aggregations = searchResponse.getAggregations();
  18. Terms byCompanyAggregation = aggregations.get("by_sex");
  19. Terms.Bucket elasticBucket = byCompanyAggregation.getBucketByKey("女性");
  20. Avg averageAge = elasticBucket.getAggregations().get("avg_age");
  21. double avg = averageAge.getValue();
  22. System.out.println("女性平均年龄:"+avg);
  23. }

Stats统计

  1. public void stats(){
  2. RestHighLevelClient client = elasticClient.getRestHighLevelClient();
  3. SearchRequest searchRequest = new SearchRequest();
  4. SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
  5. TermsAggregationBuilder aggregation = AggregationBuilders.terms("by_sex")
  6. .field("sex.keyword"); //by_sex为聚合名称,名称可随意
  7. aggregation.subAggregation(AggregationBuilders.stats("stat_age")
  8. .field("age")); //avg_age 为子聚合名称,名称可随意
  9. searchSourceBuilder.aggregation(aggregation);
  10. searchRequest.source(searchSourceBuilder);
  11. SearchResponse searchResponse = null;
  12. try {
  13. searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
  14. } catch (IOException e) {
  15. e.printStackTrace();
  16. }
  17. Aggregations aggregations = searchResponse.getAggregations();
  18. Terms byCompanyAggregation = aggregations.get("by_sex");
  19. List<? extends Terms.Bucket> buckets = byCompanyAggregation.getBuckets();
  20. for (Terms.Bucket bucket : buckets) {
  21. Stats statAge = bucket.getAggregations().get("stat_age");
  22. System.out.println(bucket.getKey()); //获取分组名称
  23. System.out.println("平均值:"+statAge.getAvg());
  24. System.out.println("总数:"+statAge.getSum());
  25. System.out.println("最大值:"+statAge.getMaxAsString());
  26. System.out.println("最小值:"+statAge.getMin());
  27. }
  28. }

ElasticSearch High Level REST API【7】聚合的更多相关文章

  1. ElasticSearch High Level REST API【6】获取集群信息

    ElasticSearch 可以通过info()方法检索群集信息: public void info(){ RestHighLevelClient client = elasticClient.get ...

  2. ElasticSearch High Level REST API【5】使用模板搜索

    ElasticSearch Rest高级API 提供了多种搜索方式,除了前面讲到的search查询,ElasticSearch 还提供了通过模板搜索查询.我个人比较喜欢这种方式. 我们可以通过脚本预选 ...

  3. ElasticSearch High Level REST API【2】搜索查询

    如下为一段带有分页的简单搜索查询示例 在search搜索中大部分的搜索条件添加都可通过设置SearchSourceBuilder来实现,然后将SearchSourceBuilder RestHighL ...

  4. ElasticSearch High Level REST API【4】多搜索

    1.Multi-Search多搜索请求 Multi-Search可同时添加多个search搜索请求,并行地在一个http请求中执行多个搜索请求,相较多次单请求查询可提升查询效率.ES客户掉通过mget ...

  5. ElasticSearch High Level REST API【3】Scroll 滚屏

    ES中提供了 FROM/SIZE 分页,但这种分页有性能瓶颈. Scroll会以间隔时间滚屏的方式返回全部的查询数据,可以作为数据量很大的情况下,分页的一个替代方案 完整的示例如下: public v ...

  6. ElasticSearch High Level REST API【1】文档基本操作

    获取ES客户端 ES的提供了四种Java客户端,分别为节点客户端(node client).传输客户端(Transport Client).低级REST客户端.高级REST客户端. 节点客户端作为集群 ...

  7. Elasticsearch Java Rest Client API 整理总结 (二) —— SearchAPI

    目录 引言 Search APIs Search API Search Request 可选参数 使用 SearchSourceBuilder 构建查询条件 指定排序 高亮请求 聚合请求 建议请求 R ...

  8. Elasticsearch Java Rest Client API 整理总结 (三)——Building Queries

    目录 上篇回顾 Building Queries 匹配所有的查询 全文查询 Full Text Queries 什么是全文查询? Match 全文查询 API 列表 基于词项的查询 Term Term ...

  9. elasticsearch中常用的API

    elasticsearch中常用的API分类如下: 文档API: 提供对文档的增删改查操作 搜索API: 提供对文档进行某个字段的查询 索引API: 提供对索引进行操作,查看索引信息等 查看API: ...

随机推荐

  1. Cloudera Manager卸载笔记

    1.通过管理平台分别停止组件服务和Cloudera Management Service 2.通过管理平台注销并移除Parcles (在控制台注销并移除,无论是安装的Parcles还是未安装的Parc ...

  2. java Redis工具类

    redis就是一个nosql数据库,做存储做缓存的,java代码中就是嵌入了一个客户端,读取与存储数据而已. 先来一个简单的工具类: package com.ming.redis; import re ...

  3. Jquery load()加载GB2312页面时出现乱码的解决方法

    问题描述:jquery的字符集是utf-8,load方法加载完GB2312编码静态页面后,出现中文乱码. a.php <script language="javascript" ...

  4. Makefile2

    规范 target可以是Object file, 可执行文件或者标签(标签一般没有依赖) 越靠近最终结果的target卸载越前面 定义target前, 定义CC, SRC, CFLAGS, OBJS, ...

  5. 关于“importer.GetNPOTScale() == TextureImporter::kNPOTKeep”问题的简单处理方法

    在运行NGUI打包图集的时候碰到下图所示的错误,这个错误导致图片无法正确的规格进行图集生成.结果是图片变成各种诡异的尺寸!! 通过关键字搜索,发现国外有讨论这个问题的解决方案: 将图片转换为textu ...

  6. kafka的分区分配策略

    用过 Kafka 的同学应该都知道,每个 Topic 一般会有很多个 partitions.为了使得我们能够及时消费消息,我们也可能会启动多个 Consumer 去消费,而每个 Consumer 又会 ...

  7. PHP与redis的操作

    String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象   $redis-&g ...

  8. yum第三方源

    EPEL RHEL 6: http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm RHEL 7: http:// ...

  9. ansible使用1-安装&配置

    参考文档 http://docs.ansible.com https://github.com/leucos/ansible-tuto 控制机安装 ansible控制机通过ssh控制远程主机,远程主机 ...

  10. 电路设计软件 电路模拟软件 sPlan , LTspice 等

    电路设计/PCB绘制 立创EDA https://lceda.cn/ sPlan http://www.electronic-software-shop.com/splan-70.html?langu ...