es聚合分页java_ES 实现聚合分页
注意:
es版本至少6.1以上
先看一下es存储的数据情况,我们需要通过pid去重并且实现分页
先贴出Es的代码
{
// 这里是对hits的数据进行限制只返回一条数据,因为我不要这里的数据,所以避免数据过多就直接返回最小
"from":0,
"size":1,
"query":{
"match_all":{
"boost":1
}
},
"aggregations":{
"agg":{
"terms":{
"field":"pid",
//这里代表聚合查询出多少条数据,注意这里的size要比最下面分页的size要大,因为是对聚合后的数据分页,如果不写的话默认是10
"size":10
},
"aggregations":{
"top":{
"top_hits":{
"from":0,
// 这里的size表示重复的返回几条,这里我们返回1
"size":1,
"version":false,
"seq_no_primary_term":false,
"explain":false,
"_source":{
"includes":[
// 这个是需要返回的字段
"pid"
],
"excludes":[
]
}
}
},
"bucket_field":{
"bucket_sort":{
"sort":[
],
// 这里是聚合分页从第几页开始,每页多少条(举个列子第一页(0,10),第二页就是(10,20))
"from":0,
"size":10
}
}
}
}
}
}
Java 代码
//构造查询器
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//查询条件查询所有
QueryBuilder queryBuilders = QueryBuilders.matchAllQuery();
// 需要返回字段的集合
String[] param= {"pid"};
// 对需要返回的数据包括哪些,不包括哪些,重复的只返回1条
TopHitsAggregationBuilder top1 = AggregationBuilders.topHits("top").fetchSource(param, Strings.EMPTY_ARRAY).size(1);
// 通过pid聚合并且聚合后返回10条数据,注意这里的size(这里代表聚合查询出多少条数据,注意这里的size要比最下面分页的size要大,因为是对聚合后的数据分页,如果不写的话默认是10)
TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders.terms("agg").field("pid").subAggregation(top1).size(10);
// 聚合分页
termsAggregationBuilder.subAggregation(new BucketSortPipelineAggregationBuilder("bucket_field",null).from(0).size(10));
// 这里的.from(0).size(1) 表示最外层hits返回的数据searchSourceBuilder.query(queryBuilders).aggregation(termsAggregationBuilder).from(0).size(1);//解析返回的数据
SearchResponse response = getSearchResponse(searchSourceBuilder);
Terms agg = response.getAggregations().get("agg");
for (Terms.Bucket bucket :agg.getBuckets()){
TopHits top = bucket.getAggregations().get("top");
for (SearchHit searchHit : top.getHits()) {
System.out.println(searchHit.getSourceAsMap());
}
}
最后结果为已去重,并且可以分页
es聚合分页java_ES 实现聚合分页相关推荐
- MySQL 排序、分页查询、聚合查询
文章目录 1. 排序 2. 分页查询 3. 聚合查询 3.1 分组聚合 GROUP BY 练习 LeetCode 176. 第二高的薪水 练习 LeetCode 177. 第N高的薪水 练习 Leet ...
- Elasticsearch(三)——Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合
Elasticsearch(三)--Es搜索(简单使用.全文查询.复合查询).地理位置查询.特殊查询.聚合操作.桶聚合.管道聚合 一.Es搜索 这里的 Es 数据博主自己上网找的,为了练习 Es 搜索 ...
- 【elasticsearch】ES 单分片使用 From/Size 分页遇到重复数据
1.概述 ES 单分片使用 From/Size 分页遇到重复数据 常规情况下 ES 单分片使用 From/Size 是不会遇到数据重复的,数据重复的可能原因有: 没有添加排序: 添加了按得分排序,但是 ...
- ES 查询示例 搜索 分组 去重 分页 排序
es 查询示例 搜索 分组 去重 分页 排序 java 语句 @Autowiredprivate static RestHighLevelClient client;@PostConstructpub ...
- es 时间字段聚合_ES按时间聚合、嵌套聚合
// POST index name/document name/_search格式 POST xxx-*/doc/_search { "query": { "bool& ...
- Elasticsearch聚合 之 Date Histogram聚合
2019独角兽企业重金招聘Python工程师标准>>> Elasticsearch的聚合主要分成两大类:metric和bucket,2.0中新增了pipeline还没有研究.本篇还是 ...
- php聚合查询,php elasticsearch 聚合查询(Aggregation)
Elasticsearch中的聚合查询,类似SQL的SUM/AVG/COUNT/GROUP BY分组查询,主要用于统计分析场景. 这里主要介绍PHP Elasticsearch 聚合查询的写法,如果不 ...
- java实现layui分页_基于LayUI分页和LayUI laypage分页的使用示例
本文介绍了LayUI分页,LayUI动态分页,LayUI laypage分页,LayUI laypage刷新当前页,分享给大家,具体如下: 效果图: 一.引用js依赖 主要是jquery-1.11. ...
- mysql 实时聚合分析_mysql滑动聚合/年初至今聚合原理与用法实例分析
本文实例讲述了mysql滑动聚合/年初至今聚合原理与用法.分享给大家供大家参考,具体如下: 滑动聚合是按顺序对滑动窗口范围内的数据进行聚合的操作.下累积聚合不同,滑动聚合并不是统计开始计算的位置到当前 ...
最新文章
- java unit包_Java接入UNIT文本对话处理源码详解
- build.gradle代码
- 互联网1分钟 | 0121 Vlog陌生人社交APP「自言」为年轻人打造生活视频分享平台;周鸿祎:智能设备要警惕“海豚音攻击”...
- 非标自动化转行机器人_机器人与非标自动化这两个有什么区别?可以从结构,功能等方面谈谈吗?...
- 文件共享服务器第二部,第二章-构建Samba文件共享服务器.docx
- redis介绍以及安装
- ue4集合类型_UE4粒子系统渲染管线概述
- 点击select下拉框获取option的属性值
- myeclipse汉化及其相关配置设置(转)
- wimdows11 eplan安装过程及遇到的问题
- 小觅双目相机如何使用_小觅双目相机测试
- 人人网如何注册与设置密码
- 手机刷机后丢失照片恢复怎么做到?
- 关于Class mocking requires to have Objenesis library in the classpath异常的处理
- 贪心题集(vjoj)
- datanlysis
- 非常有用的10个谈话技巧
- sql语法基础,sql分组查询
- Java+JVM+MySQL+数据结构与算法,一文说清!
- TCP和UDP编程的区别,步骤
热门文章
- 计算机办公应用工程师中级证书有用吗,软考的中级证书有用吗有哪些用途
- 嵌入式基础知识之片选
- 高精度的“文件转换excel”背后藏着这些解题思路!
- 游戏模型提取_游戏模型 | 09巫战手臂锁子甲及皮革纹理
- 微信小游戏----HTML学习脚本(1)
- php 给图片添加链接_【dreamweaver给图片添加链接】用dreamweaver 怎样给图片局部地区添加超链接?...
- 本地hosts文件无法保存,一保存就显示另存为的解决方案
- html+css3 学生信息表
- idea安装lombok - 雨中散步撒哈拉
- 清理VMware虚拟机磁盘,解决虚拟机磁盘只增不减问题