现有索引数据:
index:school
type:student
---------------------------------------------------
{"grade":"1", "class":"1", "name":"xiao 1"}
{"grade":"1", "class":"1", "name":"xiao 2"}
{"grade":"1", "class":"2", "name":"xiao 3"}
{"grade":"1", "class":"2", "name":"xiao 4"}
{"grade":"1", "class":"2", "name":"xiao 5"}
Java分组统计年级和班级学生个数,如SQL: SELECT grade,class,count(1) FROM student GROUP BY grade,class;
package test;
import java.util.Iterator;
import java.util.Map;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.search.aggregations.Aggregation;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.StringTerms;
import org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket;
import org.elasticsearch.search.aggregations.bucket.terms.TermsBuilder;
import org.junit.Test;
import utils.NesUtils;
public class TestAggregation
{
@Test
public void testAggregation()
{
SearchRequestBuilder srb = NesUtils.getSearcher("school");
srb.setTypes("student");
srb.setSearchType(SearchType.COUNT);
TermsBuilder gradeTermsBuilder = AggregationBuilders.terms("gradeAgg").field("grade");
TermsBuilder classTermsBuilder = AggregationBuilders.terms("classAgg").field("class");
gradeTermsBuilder.subAggregation(classTermsBuilder);
srb.addAggregation(gradeTermsBuilder);
SearchResponse sr = srb.execute().actionGet();
Map<String, Aggregation> aggMap = sr.getAggregations().asMap();
StringTerms gradeTerms = (StringTerms) aggMap.get("gradeAgg");
Iterator<Bucket> gradeBucketIt = gradeTerms.getBuckets().iterator();
while(gradeBucketIt.hasNext())
{
Bucket gradeBucket = gradeBucketIt.next();
System.out.println(gradeBucket.getKey() + "年级有" + gradeBucket.getDocCount() +"个学生。");
StringTerms classTerms = (StringTerms) gradeBucket.getAggregations().asMap().get("classAgg");
Iterator<Bucket> classBucketIt = classTerms.getBuckets().iterator();
while(classBucketIt.hasNext())
{
Bucket classBucket = classBucketIt.next();
System.out.println(gradeBucket.getKey() + "年级" +classBucket.getKey() + "班有" + classBucket.getDocCount() +"个学生。");
}
System.out.println();
}
}
}
运行完成输出结果
---------------------------------------------------
1年级有5个学生。
1年级2班有3个学生。
1年级1班有2个学生。
- 浏览: 400035 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (311)
- 网站开发及性能优化 (1)
- JQUERY滚动加载 (1)
- 网络编辑 (1)
- redis (2)
- memcache (4)
- mongodb (5)
- kafka (7)
- apache (3)
- Nexus (2)
- 操作系统 (21)
- JDK (2)
- MyEclipse (11)
- SVN (4)
- Tomcat (3)
- Solr (4)
- CENTOS (5)
- ubuntu (2)
- 新浪微博api (1)
- elasticsearch (60)
- java (28)
- MAC (6)
- Lucene (4)
- Linux (14)
- mysql (6)
- XenCenter (1)
- ext (3)
- spring (6)
- oracle (4)
- tsp (1)
- JForum (1)
- jms (1)
- CAS (1)
- jquery (6)
- freemarker (2)
- 项目管理 (5)
- CSS (3)
- 事务管理 (1)
- js (3)
- 分词 (1)
- 分词器 (1)
- oauthToken (1)
- hadoop (8)
- spark (1)
- cache (1)
- unicode (1)
- 正则表达式 (1)
- google (1)
- Postfix (4)
- windows (3)
- 搜索引擎 (1)
- notepad (1)
- nginx (1)
- outlook (1)
- Fiddler (2)
- Shadowsocks (0)
- github (1)
- 算法 (4)
- zabbix (1)
- office (2)
- maven (8)
- TeamView (1)
- csv (1)
- mikrotik (1)
- DELL (1)
- USVN (2)
- mybatis (3)
- vue (1)
- python (1)
- zxing (2)
- Intellij idea (0)
- IDEA (2)
- http (2)
- JWT (1)
- CAP (1)
- Nacos (1)
- OpenFeign (1)
- SpringCloud (1)
- feign (1)
- springboot (2)
- skywalking (1)
- 微服务 (2)
- 部署 (1)
- bootstrap (1)
最新评论
-
xam_sunny:
用楼主的第一种方法解决了乱码问题,谢谢分享。
spring 中文乱码 -
lzq570:
...
freemarker中分页
发表评论
-
elasticsearch-env行116未预期的符号附近有语法错误
2020-07-04 15:11 746> 第一次解决方式(): bash 3.0后,she ... -
Elasticsearch启动、停止脚本
2020-07-04 15:00 712构建Elasticsearch启动脚本 start_es ... -
Elasticsearch搜索类型(query type)详
2016-08-04 12:05 673es在查询时,可以指定 ... -
elasticsearch游标查询所有数据
2016-08-04 10:47 2070在Elasticsearch中找一个 ... -
Elasticsearch安装与测试验证详解
2016-07-29 18:05 829什么是Elasticsearch? 【百科】Elasti ... -
Shard数调优(ElasticSearch性能)
2016-07-27 18:12 1979摘要 当创建一个索引的时候,我们经常会面对一个问题:要为索 ... -
Elasticsearch的存储模型和读写操作
2016-07-27 15:46 483剖析Elasticsearch集群系列涵盖了当今最流行的分布 ... -
亿级规模的 Elasticsearch 优化实战
2016-07-27 15:33 899Elasticsearch 的基本信息大致如图所示,这里就不 ... -
Elasticsearch 架构以及源码概览
2016-07-22 18:18 722Elasticsearch 是最近两年异军突起的一个兼有搜 ... -
Elasticsearch模块功能之-路由(routing)
2016-07-22 15:44 725索引分片分配能够控制索引分片在节点上怎么分布,那对于具体的文 ... -
elasticsearch通用API,多数据源,分组
2016-07-12 13:53 2926公司项目大规模使用elasticsearch,封装了统一的e ... -
Elasticsearch过滤与聚合的先后顺序java实现
2016-07-07 10:48 4467一、Elasticsearch的聚合 ES的聚合相当于关系 ... -
ElasticSearch Java api 详解_V1.0
2016-07-07 10:23 824原英文文档:http://www.elasticsearc ... -
Elasticsearch head插件介绍
2016-06-30 16:31 1936datasize: 121Mi (242Mi)docs: 1 ... -
Elasticsearch 1.7 热更新
2016-06-07 14:42 1318搜索是一个需要不停改进的项目,有时我们需要更新分词插件,有时 ... -
Elasticsearch 搜索服务器全集群升级版本并重启
2016-05-28 21:36 754Elasticsearch 搜索服务器需要一个完整的集群重启 ... -
集群临时重启
2016-05-28 21:17 617集群节点临时重启当修改配置时可能需要重启集群才生效,或者集群发 ... -
elasticsearch之节点重启
2016-05-24 13:22 990Elasticsearch节点重启时背后发 ... -
elasticsearch如何安全重启节点
2016-05-24 11:58 909elasticsearch集群,有时候可能需要修改配置 ... -
Elasticsearch 合理内存分配
2016-05-03 22:45 787Elasticsearch默认安装后设置的内存是1GB,对于 ...
相关推荐
标签《ES Java API 中文文档》强调了文档的内容属性,它属于ElasticSearch的一个重要组成部分,即用Java语言进行数据交互和操作的应用程序接口部分。 从部分内容中可以提取出以下知识点: 1. **Transport Client**...
**Elasticsearch Java API详解** Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,广泛应用于大数据领域的实时分析和信息检索。Java API是Elasticsearch官方提供的与Elasticsearch服务器进行交互的...
在"elasticsearch5.6以上version通用java API"中,我们将会探讨如何利用Java编写工具类,以覆盖更全面的操作,如映射创建、批量插入、聚合查询以及模糊和精确查询。 1. **映射创建**:Elasticsearch的映射(Mapping...
**Elasticsearch Java API 离线文档** Elasticsearch 是一个开源的全文搜索引擎,它提供了高度可扩展的、实时的搜索与分析引擎服务。Java API 是 Elasticsearch 提供的用于与集群交互的主要接口,允许开发者在 Java...
**Elasticsearch离线Java API文档详解** Elasticsearch(简称ES)是...离线下载的Java API文档是开发者不可或缺的学习和参考资源,它详细解释了每个方法的使用和示例,帮助我们更好地理解和利用Elasticsearch的功能。
**Elasticsearch Java API**是Elasticsearch官方提供的用于与Elasticsearch服务器进行交互的Java客户端库。在Java应用程序中,我们通常会使用这个API来创建、查询、更新和删除索引中的数据。Elasticsearch 2.3版本的...
在这个基于Elasticsearch 2.1.1的Java API基本操作代码示例中,我们将探讨如何利用Java API进行常见的数据操作,如索引创建、文档插入、查询以及更新。 首先,为了使用Elasticsearch的Java API,我们需要在项目中...
总的来说,Elasticsearch的Java实现涵盖了索引生命周期管理、查询构建和执行等多个方面,通过Java代码可以灵活地进行数据操作,实现高效的数据检索和分析。开发者需要对Elasticsearch的原理有深入理解,并掌握Java ...
ElasticSearch 官方 java API
ES(elasticSearch6.4.0)之java API源码demo-完整注释版,本版本为上一demo版本升级版,封装了ES的javaAPI,支持了模糊查询,排序查询,解析,分页查询等功能,如果有问题请留言。我会及时回复。
**Elasticsearch Java API**是Elasticsearch与Java应用程序交互的主要工具,它允许开发者在Java环境中无缝地创建、管理和查询Elasticsearch索引。Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,用于...
本压缩包文件"Java API整合ES实现深分页,高亮等操作.zip"可能包含了一个Java应用程序,该程序展示了如何使用Java API来实现Elasticsearch的高级功能,如深度分页和高亮显示。深度分页是指在大数据量下,能够有效地...
Elasticsearch 5.x 版本的 Java API 手册是开发者进行 Elasticsearch 相关开发的重要参考资料。Elasticsearch 是一个流行的开源全文搜索引擎,广泛应用于数据检索、分析和实时数据存储。Java API 提供了与 Elastic...
Java实现Elasticsearch的简单实例主要涉及以下几个关键知识点: 1. **Elasticsearch基础**:Elasticsearch(ES)是一个开源的、分布式全文搜索引擎,它提供了实时数据分析的能力,广泛用于日志分析、监控、搜索应用...
Java 使用 Elasticsearch 进行分组聚合查询是一个常见的需求,特别是在大数据处理和数据分析领域。Elasticsearch 提供了强大的聚合功能,可以对数据进行分组、排序、筛选等操作。在 Java 中,我们可以使用 Elastic...
完美解决distinct中使用多个字段的方法,完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法
- 聚合统计:Elasticsearch提供了丰富的聚合功能,如`TermsAggregation`、`StatsAggregation`等,可以对字段进行分组统计、平均值、最大值、最小值等计算。 6. **优化和最佳实践** - 使用合适的索引设置:调整...
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。 ElasticSearch提供javaAPI,使用者可以...
本项目是针对Elasticsearch 5.x版本的Java工具类,旨在简化与SpringBoot集成时的开发流程,通过封装常用API和自定义注解,实现开箱即用的功能。 首先,让我们深入理解Elasticsearch的Java API。Elasticsearch提供了...