BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
RangeQueryBuilder createTimeQuery = QueryBuilders.rangeQuery("createTime");
createTimeQuery.gte(startTime);
createTimeQuery.lte(endTime);
queryBuilder.must(createTimeQuery);
//过滤面授班
String skuPropertyId = commodityGoodsSupport.getTrainingTypePropertyIdByGoodsCategory(context);
String offLineValue = commodityGoodsSupport.getTrainingTypeOfflineClassPropertyValue(context, "");
String onLineValue = commodityGoodsSupport.getTrainingTypeOnlineClassPropertyValue(context, "");
if (CollectionUtils.isNotEmpty(searchDto.getSkuPropertyList())) {
if (searchDto.isQueryOffLineClass() && StringUtils.isNotBlank(offLineValue)) {
for (SkuPropertyKeyValue item : searchDto.getSkuPropertyList()) {
if (item.getPropertyId().equals(skuPropertyId)) {
item.setValue(offLineValue);
}
}
} else if (!searchDto.isQueryOffLineClass() && StringUtils.isNotBlank(onLineValue)) {
for (SkuPropertyKeyValue item : searchDto.getSkuPropertyList()) {
if (item.getPropertyId().equals(skuPropertyId)) {
item.setValue(onLineValue);
}
}
}
BoolQueryBuilder nestedBoolQuery;
for (SkuPropertyKeyValue item : searchDto.getSkuPropertyList()) {
if (StringUtils.isNotBlank(item.getPropertyId()) && StringUtils.isNotBlank(item.getValue())) {
nestedBoolQuery = QueryBuilders.boolQuery();
nestedBoolQuery.filter(QueryBuilders.termQuery("skuProperties.id", item.getPropertyId()));
nestedBoolQuery.filter(QueryBuilders.termQuery("skuProperties.value", item.getValue()));
queryBuilder.filter(QueryBuilders.nestedQuery("skuProperties", nestedBoolQuery, ScoreMode.None));
}
}
}
queryBuilder.filter(QueryBuilders.termQuery("projectId", context.getProjectId()));
queryBuilder.filter(QueryBuilders.termQuery("subProjectId", context.getSubProjectId()));
// 培训班id
if (StringUtils.isNotBlank(searchDto.getTrainClassId())) {
QueryBuilder trainClassQuery = QueryBuilders.termQuery("trainClassId", searchDto.getTrainClassId());
queryBuilder.must(trainClassQuery);
}
//地区,
if(StringUtils.isNotBlank(searchDto.getRegionPath()) && searchDto.getRegionPath().split("/").length>3){
QueryBuilder trainClassQuery = QueryBuilders.termQuery("unitRegion.countryId", searchDto.getRegionPath().split("/")[3]);
queryBuilder.must(trainClassQuery);
}
SumAggregationBuilder swapInCountMetrics = AggregationBuilders.sum("swapInCountMetrics").field("swapInCount");
SumAggregationBuilder openCountMetrics = AggregationBuilders.sum("openCountMetrics").field("openCount");
SumAggregationBuilder swapOutCountMetrics = AggregationBuilders.sum("swapOutCountMetrics")
.field("swapOutCount");
SumAggregationBuilder refundCountMetrics = AggregationBuilders.sum("refundCountMetrics").field("refundCount");
AggregationBuilder aggregation = AggregationBuilders.terms("trainingGroup").field("unitRegion.countryId")
.subAggregation(swapInCountMetrics).subAggregation(openCountMetrics).subAggregation(swapOutCountMetrics)
.subAggregation(refundCountMetrics);
SearchResponse sr = client.prepareSearch().setIndices(super.entityInformation.getIndexName())
.setTypes(super.entityInformation.getType()).setQuery(queryBuilder)// 过滤条件
.addAggregation(aggregation)// 聚合
.execute().actionGet();
Terms trainingGroup = sr.getAggregations().get("trainingGroup");// 可以统计当前匹配的聚合结果集
return trainingGroup; #获取查询结果
Terms trainingGroup = getBucketAreaInfo(context, searchDto, startTime, endTime);//获取班级聚合的数据
List<Bucket> bucketList = trainingGroup.getBuckets(); for (Bucket b : bucketList) {
PureOpenBucketDto dto = new PureOpenBucketDto();
dto.setCountryId(b.getKeyAsString());
Aggregations aggs = b.getAggregations();
Sum swapInSum = aggs.get("swapInCountMetrics");
Sum swapOutSum = aggs.get("swapOutCountMetrics");
Sum openSum = aggs.get("openCountMetrics");
Sum refundSum = aggs.get("refundCountMetrics"); dto.setSwapInCount(((Double) swapInSum.getValue()).intValue());
dto.setSwapOutCount(((Double) swapOutSum.getValue()).intValue());
dto.setOpenCount(((Double) openSum.getValue()).intValue());
dto.setRefundCount(((Double) refundSum.getValue()).intValue());
dtoList.add(dto);
}
return dtoList;

Elasticsearch **代码片段的更多相关文章

  1. elasticsearch代码片段,及工具类SearchEsUtil.java

    ElasticSearchClient.java package com.zbiti.framework.elasticsearch.utils; import java.util.Arrays; i ...

  2. sublimetext3中保存代码片段

    在日常的开发工作中,不断重复上一次敲过的代码,有时确实感到伐木累."蓝瘦"(难受)."香菇"(想哭),大概表达的也是这样的心境吧!:grinning: 所以,在 ...

  3. Code Snippets 代码片段

    Code Snippets 代码片段       1.Title : 代码片段的标题 2.Summary : 代码片段的描述文字 3.Platform : 可以使用代码片段的平台,有IOS/OS X/ ...

  4. 10个 jQuery 代码片段,可以帮你快速开发。

    转载自:http://mp.weixin.qq.com/s/mMstI10vqwu8PvUwlLborw 1.返回顶部按钮 你可以利用 animate 和 scrollTop 来实现返回顶部的动画,而 ...

  5. 代码片段添加智能提示,打造一款人见人爱的ORM框架

    SqlSugar ORM优点: 1.高性能,达到原生最高水准,比SqlHelper性能要高,比Dapper快30% 比EF快50% 2.支持多种数据库 ,sql版本更新最快,其它会定期更新,可以在多种 ...

  6. js/jquery/html前端开发常用到代码片段

    1.IE条件注释 条件注释简介 IE中的条件注释(Conditional comments)对IE的版本和IE非IE有优秀的区分能力,是WEB设计中常用的hack方法.条件注释只能用于IE5以上,IE ...

  7. Visual Studio 如何使用代码片段Code Snippet提高编程速度!!!

      使用Code Snippet简化Coding 在开发的项目的时候,你是否经常遇到需要重复编写一些类似的代码,比如是否经常会使用 for.foreach ? 在编写这两个循环语句的时候,你是一个字符 ...

  8. Visual Studio 的代码片段工具

    当安装完Visual Studio之后,会有附带一些原生的代码片段文件(*.snippet),对于vs2013参考目录如下: X:\Program Files (x86)\Microsoft Visu ...

  9. sublime代码片段

    创建方法:Tools > New Snippet 这时你会看到如下示例代码: <snippet>      <content><![CDATA[ Hello, ${ ...

随机推荐

  1. 当git上文件名大小写重命名的修改时(git大小写敏感/默认不敏感),如何重命名并提交

    git默认是大小写不敏感!!! 加了感叹号是什么意思呢,意思就是这本身就是一个坑,本人使用的IDE是idea(网上说Eclipse可以避开问题),这个IDE本身就集成了git,但是如果要在termin ...

  2. Linux下截屏方法

    参考百度经验 https://jingyan.baidu.com/article/48a42057c8e8dfa92525047c.html 第一种: 截屏部分画面并保存 快捷键Shift+PrtSc

  3. 10.python面向对象进阶功能

    isinstance(obj,cls)和issubclass(sub,super)(1)isinstance(obj,cls)检查一个对象obj是否是一个类cls的实例(2)issubclass(su ...

  4. bash的工作特性(2)

    bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示. 命令的执行结果状态 成功,失败 bash使用特殊变量$?保存最近一条命令的执行状态结果:echo$? 0:成功 1-255 ...

  5. CocosCreator引擎修改与定制

    1.CCGame.js 修改部分数据脚本的加载时机,避免首屏卡顿 // Load game scripts var jsList = config[CONFIG_KEY.jsList]; if (js ...

  6. git 错误汇总

    ★一.git提交时报错:Updates were rejected because the tip of your current branch is behind 出现这样的问题是由于:自己当前版本 ...

  7. mac添加redis 环境变量

    cd /etc/paths.d touch redis vim redis 写入 /Users/love/Downloads/redis-4.0.10/src 之后就可以直接执行redis-cli r ...

  8. 记录一次mysql查询速度慢造成CPU使用率很高情况

    1.某日zabbix告警,某台机器CPU使用率过高. 查看慢查询日志,看到很多sql语句都超过10秒 把sql语句拿出来放在查询窗口执行.前面加上explain就可以查看详细查询信息 playcode ...

  9. 安装Kerberos后,如何不使用它,Current Kerberos password:

    在不知情的情况下,安装了kerberos,然后只有是有密码的地方,一直有这个: Current Kerberos password: 没有了解过kerberos,想要卸载,卸载了还是有,怎么弄都弄不掉 ...

  10. Hibernate复习

    第一天 Hibernate是一个持久层的ORM框架.两个配置文件, 类名.hbm.xml类的属性和表的列对应 hibernate.cfg.xml核心配置文件 Hibernate相关API: Confi ...