ElasticSearch High Level REST API【7】聚合
获取平均值聚合示例,最大值、最小值、求和类似
- public void aggregation(){
- RestHighLevelClient client = elasticClient.getRestHighLevelClient();
- SearchRequest searchRequest = new SearchRequest();
- SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
- TermsAggregationBuilder aggregation = AggregationBuilders.terms("by_sex")
- .field("sex.keyword"); //text类型不能用于索引或排序,必须转成keyword类型
- aggregation.subAggregation(AggregationBuilders.avg("avg_age")
- .field("age")); //avg_age 为子聚合名称,名称可随意
- searchSourceBuilder.aggregation(aggregation);
- searchRequest.source(searchSourceBuilder);
- SearchResponse searchResponse = null;
- try {
- searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
- } catch (IOException e) {
- e.printStackTrace();
- }
- Aggregations aggregations = searchResponse.getAggregations();
- Terms byCompanyAggregation = aggregations.get("by_sex");
- Terms.Bucket elasticBucket = byCompanyAggregation.getBucketByKey("女性");
- Avg averageAge = elasticBucket.getAggregations().get("avg_age");
- double avg = averageAge.getValue();
- System.out.println("女性平均年龄:"+avg);
- }
Stats统计
- public void stats(){
- RestHighLevelClient client = elasticClient.getRestHighLevelClient();
- SearchRequest searchRequest = new SearchRequest();
- SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
- TermsAggregationBuilder aggregation = AggregationBuilders.terms("by_sex")
- .field("sex.keyword"); //by_sex为聚合名称,名称可随意
- aggregation.subAggregation(AggregationBuilders.stats("stat_age")
- .field("age")); //avg_age 为子聚合名称,名称可随意
- searchSourceBuilder.aggregation(aggregation);
- searchRequest.source(searchSourceBuilder);
- SearchResponse searchResponse = null;
- try {
- searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
- } catch (IOException e) {
- e.printStackTrace();
- }
- Aggregations aggregations = searchResponse.getAggregations();
- Terms byCompanyAggregation = aggregations.get("by_sex");
- List<? extends Terms.Bucket> buckets = byCompanyAggregation.getBuckets();
- for (Terms.Bucket bucket : buckets) {
- Stats statAge = bucket.getAggregations().get("stat_age");
- System.out.println(bucket.getKey()); //获取分组名称
- System.out.println("平均值:"+statAge.getAvg());
- System.out.println("总数:"+statAge.getSum());
- System.out.println("最大值:"+statAge.getMaxAsString());
- System.out.println("最小值:"+statAge.getMin());
- }
- }
ElasticSearch High Level REST API【7】聚合的更多相关文章
- ElasticSearch High Level REST API【6】获取集群信息
ElasticSearch 可以通过info()方法检索群集信息: public void info(){ RestHighLevelClient client = elasticClient.get ...
- ElasticSearch High Level REST API【5】使用模板搜索
ElasticSearch Rest高级API 提供了多种搜索方式,除了前面讲到的search查询,ElasticSearch 还提供了通过模板搜索查询.我个人比较喜欢这种方式. 我们可以通过脚本预选 ...
- ElasticSearch High Level REST API【2】搜索查询
如下为一段带有分页的简单搜索查询示例 在search搜索中大部分的搜索条件添加都可通过设置SearchSourceBuilder来实现,然后将SearchSourceBuilder RestHighL ...
- ElasticSearch High Level REST API【4】多搜索
1.Multi-Search多搜索请求 Multi-Search可同时添加多个search搜索请求,并行地在一个http请求中执行多个搜索请求,相较多次单请求查询可提升查询效率.ES客户掉通过mget ...
- ElasticSearch High Level REST API【3】Scroll 滚屏
ES中提供了 FROM/SIZE 分页,但这种分页有性能瓶颈. Scroll会以间隔时间滚屏的方式返回全部的查询数据,可以作为数据量很大的情况下,分页的一个替代方案 完整的示例如下: public v ...
- ElasticSearch High Level REST API【1】文档基本操作
获取ES客户端 ES的提供了四种Java客户端,分别为节点客户端(node client).传输客户端(Transport Client).低级REST客户端.高级REST客户端. 节点客户端作为集群 ...
- Elasticsearch Java Rest Client API 整理总结 (二) —— SearchAPI
目录 引言 Search APIs Search API Search Request 可选参数 使用 SearchSourceBuilder 构建查询条件 指定排序 高亮请求 聚合请求 建议请求 R ...
- Elasticsearch Java Rest Client API 整理总结 (三)——Building Queries
目录 上篇回顾 Building Queries 匹配所有的查询 全文查询 Full Text Queries 什么是全文查询? Match 全文查询 API 列表 基于词项的查询 Term Term ...
- elasticsearch中常用的API
elasticsearch中常用的API分类如下: 文档API: 提供对文档的增删改查操作 搜索API: 提供对文档进行某个字段的查询 索引API: 提供对索引进行操作,查看索引信息等 查看API: ...
随机推荐
- Cloudera Manager卸载笔记
1.通过管理平台分别停止组件服务和Cloudera Management Service 2.通过管理平台注销并移除Parcles (在控制台注销并移除,无论是安装的Parcles还是未安装的Parc ...
- java Redis工具类
redis就是一个nosql数据库,做存储做缓存的,java代码中就是嵌入了一个客户端,读取与存储数据而已. 先来一个简单的工具类: package com.ming.redis; import re ...
- Jquery load()加载GB2312页面时出现乱码的解决方法
问题描述:jquery的字符集是utf-8,load方法加载完GB2312编码静态页面后,出现中文乱码. a.php <script language="javascript" ...
- Makefile2
规范 target可以是Object file, 可执行文件或者标签(标签一般没有依赖) 越靠近最终结果的target卸载越前面 定义target前, 定义CC, SRC, CFLAGS, OBJS, ...
- 关于“importer.GetNPOTScale() == TextureImporter::kNPOTKeep”问题的简单处理方法
在运行NGUI打包图集的时候碰到下图所示的错误,这个错误导致图片无法正确的规格进行图集生成.结果是图片变成各种诡异的尺寸!! 通过关键字搜索,发现国外有讨论这个问题的解决方案: 将图片转换为textu ...
- kafka的分区分配策略
用过 Kafka 的同学应该都知道,每个 Topic 一般会有很多个 partitions.为了使得我们能够及时消费消息,我们也可能会启动多个 Consumer 去消费,而每个 Consumer 又会 ...
- PHP与redis的操作
String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 $redis-&g ...
- yum第三方源
EPEL RHEL 6: http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm RHEL 7: http:// ...
- ansible使用1-安装&配置
参考文档 http://docs.ansible.com https://github.com/leucos/ansible-tuto 控制机安装 ansible控制机通过ssh控制远程主机,远程主机 ...
- 电路设计软件 电路模拟软件 sPlan , LTspice 等
电路设计/PCB绘制 立创EDA https://lceda.cn/ sPlan http://www.electronic-software-shop.com/splan-70.html?langu ...