注意:

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 实现聚合分页相关推荐

  1. MySQL 排序、分页查询、聚合查询

    文章目录 1. 排序 2. 分页查询 3. 聚合查询 3.1 分组聚合 GROUP BY 练习 LeetCode 176. 第二高的薪水 练习 LeetCode 177. 第N高的薪水 练习 Leet ...

  2. Elasticsearch(三)——Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合

    Elasticsearch(三)--Es搜索(简单使用.全文查询.复合查询).地理位置查询.特殊查询.聚合操作.桶聚合.管道聚合 一.Es搜索 这里的 Es 数据博主自己上网找的,为了练习 Es 搜索 ...

  3. 【elasticsearch】ES 单分片使用 From/Size 分页遇到重复数据

    1.概述 ES 单分片使用 From/Size 分页遇到重复数据 常规情况下 ES 单分片使用 From/Size 是不会遇到数据重复的,数据重复的可能原因有: 没有添加排序: 添加了按得分排序,但是 ...

  4. ES 查询示例 搜索 分组 去重 分页 排序

    es 查询示例 搜索 分组 去重 分页 排序 java 语句 @Autowiredprivate static RestHighLevelClient client;@PostConstructpub ...

  5. es 时间字段聚合_ES按时间聚合、嵌套聚合

    // POST index name/document name/_search格式 POST xxx-*/doc/_search { "query": { "bool& ...

  6. Elasticsearch聚合 之 Date Histogram聚合

    2019独角兽企业重金招聘Python工程师标准>>> Elasticsearch的聚合主要分成两大类:metric和bucket,2.0中新增了pipeline还没有研究.本篇还是 ...

  7. php聚合查询,php elasticsearch 聚合查询(Aggregation)

    Elasticsearch中的聚合查询,类似SQL的SUM/AVG/COUNT/GROUP BY分组查询,主要用于统计分析场景. 这里主要介绍PHP Elasticsearch 聚合查询的写法,如果不 ...

  8. java实现layui分页_基于LayUI分页和LayUI laypage分页的使用示例

    本文介绍了LayUI分页,LayUI动态分页,LayUI laypage分页,LayUI laypage刷新当前页,分享给大家,具体如下: 效果图: 一.引用js依赖 主要是jquery-1.11. ...

  9. mysql 实时聚合分析_mysql滑动聚合/年初至今聚合原理与用法实例分析

    本文实例讲述了mysql滑动聚合/年初至今聚合原理与用法.分享给大家供大家参考,具体如下: 滑动聚合是按顺序对滑动窗口范围内的数据进行聚合的操作.下累积聚合不同,滑动聚合并不是统计开始计算的位置到当前 ...

最新文章

  1. java unit包_Java接入UNIT文本对话处理源码详解
  2. build.gradle代码
  3. 互联网1分钟 | 0121 Vlog陌生人社交APP「自言」为年轻人打造生活视频分享平台;周鸿祎:智能设备要警惕“海豚音攻击”...
  4. 非标自动化转行机器人_机器人与非标自动化这两个有什么区别?可以从结构,功能等方面谈谈吗?...
  5. 文件共享服务器第二部,第二章-构建Samba文件共享服务器.docx
  6. redis介绍以及安装
  7. ue4集合类型_UE4粒子系统渲染管线概述
  8. 点击select下拉框获取option的属性值
  9. myeclipse汉化及其相关配置设置(转)
  10. wimdows11 eplan安装过程及遇到的问题
  11. 小觅双目相机如何使用_小觅双目相机测试
  12. 人人网如何注册与设置密码
  13. 手机刷机后丢失照片恢复怎么做到?
  14. 关于Class mocking requires to have Objenesis library in the classpath异常的处理
  15. 贪心题集(vjoj)
  16. datanlysis
  17. 非常有用的10个谈话技巧
  18. sql语法基础,sql分组查询
  19. Java+JVM+MySQL+数据结构与算法,一文说清!
  20. TCP和UDP编程的区别,步骤

热门文章

  1. 计算机办公应用工程师中级证书有用吗,软考的中级证书有用吗有哪些用途
  2. 嵌入式基础知识之片选
  3. 高精度的“文件转换excel”背后藏着这些解题思路!
  4. 游戏模型提取_游戏模型 | 09巫战手臂锁子甲及皮革纹理
  5. 微信小游戏----HTML学习脚本(1)
  6. php 给图片添加链接_【dreamweaver给图片添加链接】用dreamweaver 怎样给图片局部地区添加超链接?...
  7. 本地hosts文件无法保存,一保存就显示另存为的解决方案
  8. html+css3 学生信息表
  9. idea安装lombok - 雨中散步撒哈拉
  10. 清理VMware虚拟机磁盘,解决虚拟机磁盘只增不减问题