es java api 进行聚合+桶聚合查询
假设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 进行聚合+桶聚合查询相关推荐
- Es Bucket聚合(桶聚合) 第一篇(常用桶聚合一览)
本篇将开始介绍Elasticsearch Bucket聚合(桶聚合). Buket Aggregations(桶聚合)不像metrics Aggregations(度量聚合)那样计算字段上的度量,而是 ...
- es java api 查询_es聚合查询javaapi
查询节气详情 package net.apishop.www.controller; import import import import import import import import i ...
- Es Bucket聚合(桶聚合) Terms Aggregation与Significant Terms Aggregation
本章将介绍elasticsearch最重要的桶聚合terms aggregation. Terms Aggregation 多值聚合,根据库中的文档动态构建桶.基于词根的聚合,如果聚合字段是text的 ...
- Es Bucket聚合(桶聚合) 第二篇-Terms Aggregation与Significant Terms Aggregation
作者介绍:<RocketMQ技术内幕>作者,中间件兴趣圈微信公众号维护者,文末有对应的二维码,关注后可以与作者更好的互动. 本章将介绍elasticsearch最重要的桶聚合terms a ...
- java中addrange_java elasticsearch 桶聚合(bucket)
Elasticsearch桶聚合,目的就是数据分组,先将数据按指定的条件分成多个组,然后对每一个组进行统计. 不了解Elasticsearch桶聚合概念,可以先学习下Elasticsearch桶聚合教 ...
- es java api 子查询,criteria 子查询 es
elasticsearch.core.query中Criteria类各个方法详解--CSDN... 2016年2月25日 asticsearch.core.query中Criteria类各个方法详解 ...
- es java api 子查询_elasticsearch elk最全java api 搜索 聚合、嵌套查询
目录 matchAllQuery()方法用来匹配全部文档 public static void matchAllQuery(Client client ) { SearchResponse res = ...
- es java match_java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)...
1.条件match query查询 //条件查询match query @Testpublic void test10() throwsUnknownHostException {//1.指定es集群 ...
- Elasticsearch Java API 的使用—多条件查询
//多条件设置 MatchPhraseQueryBuilder mpq1 = QueryBuilders.matchPhraseQuery("pointid","W3.U ...
最新文章
- jquery知识巩固
- websocket中发生数据丢失_获取使用关闭代码1006关闭websocket的原因
- 我们的开源项目-2013年度开源社区线下聚会《JEECG微云快速开发平台-SAAS企业应用在线开发与微信移动应用》PPT分享
- RabbitMQ核心概念和AMQP协议(二)
- c语言node类型_高阶宏的妙用技法,C语言宏你所不知道的聪明技巧
- svn update中文报错_svn不能更新也不能提交!为什么?
- 未来计算机作文700字,未来的科技作文700字
- opencv表面缺陷检测_机器视觉表面缺陷检测 光学元件瑕疵检测
- tensorflow基础:tf.data.Dataset.from_tensor_slices()
- c 关闭html,运行node Server.js后如何关闭?
- 微信api接口调用-触发推送微信群聊列表
- knockoutjs三 text和apperance的绑定
- 计算机专业要学数值分析吗,数值计算方法 数值分析这两门课有什么区别?
- mt管理器主题修改教程_手机全局主题:美乐蒂
- 微信公众号点击图片跳转关注
- 第六章:组合数据类型练习[人名独特性统计]学习思考
- Linux设备驱动 | LED字符设备驱动(platform平台总线)
- day002血字的研究
- 关于grldr is missing
- 使用xpath解析爬取链家
热门文章
- python处理excel的时间格式_Python处理Excel使用pandas处理时间格式数据
- 古文选读161篇--蔡礼旭老师选
- STL文件模型体积计算
- kubernet-- windows之kubectl的安装及使用(巧克力)
- gRPC详细入门教程,Golang/Python/PHP多语言讲解
- 跑过的城市,走过的路
- HTML5学习笔记14-Canvas绘制渐变图形与绘制变形图形
- python基本数据类型之字典详解
- 内大计算机学院研究生奖学金,计算机学院2020级硕士研究生学业奖学金评审结果公示...
- scratch下实现子弹追踪特效