假设1个member有多个参加的meeting(会议),每个meeting可多次参加,每次参加对应一条参加时间和备注记录
需求: 获取某个member的所有meeting的最新一条记录

查询语句

{"query": {"term": {"memberid": "2136476"}},"aggs": {"group": {"terms": {"field": "meetingid","order": {"sortTime": "desc"}},"aggs": {"result": {"top_hits": {"_source": ["meetingid","memo","addtime"],"size": 1,"sort": {"addtime": {"order": "desc"}}}},"sortTime": {"max": {"field": "addtime"}}}}}
}

Java实现

 public List<Map<String, Object>> getaa() {// 根据客户id查询BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();boolQuery.must(QueryBuilders.termQuery("memberid", 2136476));SearchSourceBuilder query = new SearchSourceBuilder();// 基本查询query.query(boolQuery);// 排序规则AggregationBuilder maxTime = AggregationBuilders.max("addtime").field("addtime");// 获取每个分组时间倒序排列的第一条记录AggregationBuilder top = AggregationBuilders.topHits("result").fetchSource(new String[]{"meetingid","memo","addtime"}, null).size(1).sort("addtime", SortOrder.DESC);// 根据会议id进行分组TermsAggregationBuilder topBuilder=AggregationBuilders.terms("meeting").field("meetingid");// 返回分组数topBuilder.size(10000);// 分组排序规则topBuilder.order(Terms.Order.aggregation("addtime", false));topBuilder.subAggregation(top);topBuilder.subAggregation(maxTime);// 聚合查询query.aggregation(topBuilder);SearchRequest request = Requests.searchRequest("crm").types("meeting_member").searchType(SearchType.QUERY_THEN_FETCH ).source(query);SearchResponse response = client.search(request).actionGet();// 需要返回的listList<Map<String, Object>> list = new ArrayList<>();// 获取查询结果的aggregation部分Aggregations aggregations = response.getAggregations();Aggregation a = aggregations.get("meeting");LongTerms teamSum= (LongTerms)a;// 遍历桶聚合后的每一个结果集for(Terms.Bucket bucket:teamSum.getBuckets()){// 获取name为result的top_hits结果集TopHits topHits = bucket.getAggregations().get("result");SearchHits hits = topHits.getHits();SearchHit[] hitArray = hits.getHits();// 因为top_hits的siez=1所以不进行遍历直接取第一条数据SearchHit hit = hitArray[0];Map<String, Object> sourceMap = hit.getSource();list.add(sourceMap);}return list;}

es java api 进行聚合+桶聚合查询相关推荐

  1. Es Bucket聚合(桶聚合) 第一篇(常用桶聚合一览)

    本篇将开始介绍Elasticsearch Bucket聚合(桶聚合). Buket Aggregations(桶聚合)不像metrics Aggregations(度量聚合)那样计算字段上的度量,而是 ...

  2. es java api 查询_es聚合查询javaapi

    查询节气详情 package net.apishop.www.controller; import import import import import import import import i ...

  3. Es Bucket聚合(桶聚合) Terms Aggregation与Significant Terms Aggregation

    本章将介绍elasticsearch最重要的桶聚合terms aggregation. Terms Aggregation 多值聚合,根据库中的文档动态构建桶.基于词根的聚合,如果聚合字段是text的 ...

  4. Es Bucket聚合(桶聚合) 第二篇-Terms Aggregation与Significant Terms Aggregation

    作者介绍:<RocketMQ技术内幕>作者,中间件兴趣圈微信公众号维护者,文末有对应的二维码,关注后可以与作者更好的互动. 本章将介绍elasticsearch最重要的桶聚合terms a ...

  5. java中addrange_java elasticsearch 桶聚合(bucket)

    Elasticsearch桶聚合,目的就是数据分组,先将数据按指定的条件分成多个组,然后对每一个组进行统计. 不了解Elasticsearch桶聚合概念,可以先学习下Elasticsearch桶聚合教 ...

  6. es java api 子查询,criteria 子查询 es

    elasticsearch.core.query中Criteria类各个方法详解--CSDN... 2016年2月25日 asticsearch.core.query中Criteria类各个方法详解 ...

  7. es java api 子查询_elasticsearch elk最全java api 搜索 聚合、嵌套查询

    目录 matchAllQuery()方法用来匹配全部文档 public static void matchAllQuery(Client client ) { SearchResponse res = ...

  8. es java match_java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)...

    1.条件match query查询 //条件查询match query @Testpublic void test10() throwsUnknownHostException {//1.指定es集群 ...

  9. Elasticsearch Java API 的使用—多条件查询

    //多条件设置 MatchPhraseQueryBuilder mpq1 = QueryBuilders.matchPhraseQuery("pointid","W3.U ...

最新文章

  1. jquery知识巩固
  2. websocket中发生数据丢失_获取使用关闭代码1006关闭websocket的原因
  3. 我们的开源项目-2013年度开源社区线下聚会《JEECG微云快速开发平台-SAAS企业应用在线开发与微信移动应用》PPT分享
  4. RabbitMQ核心概念和AMQP协议(二)
  5. c语言node类型_高阶宏的妙用技法,C语言宏你所不知道的聪明技巧
  6. svn update中文报错_svn不能更新也不能提交!为什么?
  7. 未来计算机作文700字,未来的科技作文700字
  8. opencv表面缺陷检测_机器视觉表面缺陷检测 光学元件瑕疵检测
  9. tensorflow基础:tf.data.Dataset.from_tensor_slices()
  10. c 关闭html,运行node Server.js后如何关闭?
  11. 微信api接口调用-触发推送微信群聊列表
  12. knockoutjs三 text和apperance的绑定
  13. 计算机专业要学数值分析吗,数值计算方法 数值分析这两门课有什么区别?
  14. mt管理器主题修改教程_手机全局主题:美乐蒂
  15. 微信公众号点击图片跳转关注
  16. 第六章:组合数据类型练习[人名独特性统计]学习思考
  17. Linux设备驱动 | LED字符设备驱动(platform平台总线)
  18. day002血字的研究
  19. 关于grldr is missing
  20. 使用xpath解析爬取链家

热门文章

  1. python处理excel的时间格式_Python处理Excel使用pandas处理时间格式数据
  2. 古文选读161篇--蔡礼旭老师选
  3. STL文件模型体积计算
  4. kubernet-- windows之kubectl的安装及使用(巧克力)
  5. gRPC详细入门教程,Golang/Python/PHP多语言讲解
  6. 跑过的城市,走过的路
  7. HTML5学习笔记14-Canvas绘制渐变图形与绘制变形图形
  8. python基本数据类型之字典详解
  9. 内大计算机学院研究生奖学金,计算机学院2020级硕士研究生学业奖学金评审结果公示...
  10. scratch下实现子弹追踪特效