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 **代码片段的更多相关文章
-
elasticsearch代码片段,及工具类SearchEsUtil.java
ElasticSearchClient.java package com.zbiti.framework.elasticsearch.utils; import java.util.Arrays; i ...
-
sublimetext3中保存代码片段
在日常的开发工作中,不断重复上一次敲过的代码,有时确实感到伐木累."蓝瘦"(难受)."香菇"(想哭),大概表达的也是这样的心境吧!:grinning: 所以,在 ...
-
Code Snippets 代码片段
Code Snippets 代码片段 1.Title : 代码片段的标题 2.Summary : 代码片段的描述文字 3.Platform : 可以使用代码片段的平台,有IOS/OS X/ ...
-
10个 jQuery 代码片段,可以帮你快速开发。
转载自:http://mp.weixin.qq.com/s/mMstI10vqwu8PvUwlLborw 1.返回顶部按钮 你可以利用 animate 和 scrollTop 来实现返回顶部的动画,而 ...
-
代码片段添加智能提示,打造一款人见人爱的ORM框架
SqlSugar ORM优点: 1.高性能,达到原生最高水准,比SqlHelper性能要高,比Dapper快30% 比EF快50% 2.支持多种数据库 ,sql版本更新最快,其它会定期更新,可以在多种 ...
-
js/jquery/html前端开发常用到代码片段
1.IE条件注释 条件注释简介 IE中的条件注释(Conditional comments)对IE的版本和IE非IE有优秀的区分能力,是WEB设计中常用的hack方法.条件注释只能用于IE5以上,IE ...
-
Visual Studio 如何使用代码片段Code Snippet提高编程速度!!!
使用Code Snippet简化Coding 在开发的项目的时候,你是否经常遇到需要重复编写一些类似的代码,比如是否经常会使用 for.foreach ? 在编写这两个循环语句的时候,你是一个字符 ...
-
Visual Studio 的代码片段工具
当安装完Visual Studio之后,会有附带一些原生的代码片段文件(*.snippet),对于vs2013参考目录如下: X:\Program Files (x86)\Microsoft Visu ...
-
sublime代码片段
创建方法:Tools > New Snippet 这时你会看到如下示例代码: <snippet> <content><![CDATA[ Hello, ${ ...
随机推荐
-
重载运算符:类成员函数or友元函数
类成员函数: bool operator ==(const point &a)const { return x==a.x; } 友元函数: friend bool operator ==(co ...
-
git版本管理策略及相关技巧(A)
公司几乎所有的项目都是使用 git 仓库来管理代码,以前对 git 只有些肤浅的了解,每次提交代码或者上线的时候总是会提心吊胆,生怕出现一些未知的问题.经过三个月的踩坑和填坑, git 操作颇显成熟. ...
-
寻ta分析与站点内容
从 寻ta 突然来的訪问量就開始在想.站点内容是否才是真正须要的东西. 寻ta分析 作为一篇文章带来的影响,我们能够看看訪问会话. 日期 訪问量 5.5 9 5.6 4618 5.7 1216 5.8 ...
-
Scrum 学习笔记
Scrum 学习笔记 敏捷火了非常长一段时间了,可是一直没有机会实践,如今開始组队实践了,哈哈,先好好研习下规则~~ 什么是 scrum Scrum是一个敏捷开发框架,是一个增量的.迭代的开发过程.在 ...
-
基于visual Studio2013解决C语言竞赛题之1012连接字符串
题目 解决代码及点评 /* 编写一个函数JOIN,让它实现字符串连接运算功能. */ #include <stdio.h> #include <stdl ...
-
HDU1035深度搜索
/* HDU1035 意甲冠军: 给定一个字符矩阵,N S W E分别代表向上,下,剩下,进 模拟搜索,推断: 若能走出字符矩阵.则Yes,输出步数 若走不出矩阵,那么必然有圈存在,必然在矩阵中存在一 ...
-
eclipse 代码清理 代码格式化 代码凝视
Code Style包含两个方面:代码清理,代码规范化.代码清理能够參考: http://www.ibm.com/developerworks/cn/opensource/os-eclipse-cle ...
-
详解MariaDB数据库的事务
1.什么是事务 数据库事务:(database transaction): 事务是由一组SQL语句组成的逻辑处理单元,一组事务中的SQL语句要不全部执行成功功:如果其中某一条执行失败,则这组SQL语句 ...
-
IntelliJ IDEA License Server 安装使用 Mac篇
一.下载 IntelliJ IDEA 是Java开发利器,用社区版不爽,干催就用旗舰版,这个是收费的,需要licence. IntelliJ IDEA下载地址:https://www.jetbrai ...
-
python scrapy同时执行spiders多个爬虫
假设spiders文件夹下多个文件: name.py name = 'name' name1.py name = 'name1' name2.py name = 'name2' . ...