zoukankan      html  css  js  c++  java
  • Elasticsearch **代码片段

    
            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;
  • 相关阅读:
    CCF 201712-4 90分
    hdu2159
    ch11 持有对象
    ch7复用类
    PLSQL Developer 9注册码
    vue + typespript + webpack
    JavaScript 复制内容到剪贴板
    在不同电脑设备之间, 同步 VSCode 的插件和配置
    常用正则:提取内容, 格式化数字
    js css3 固定点拖拽旋转
  • 原文地址:https://www.cnblogs.com/jinjian91/p/9674777.html
Copyright © 2011-2022 走看看