@Override public AbstractAggregationBuilder getFacet() { Assert.notNull(getName(), "Facet name can't be a null !!!"); RangeAggregationBuilder rangeBuilder = AggregationBuilders.range(getName()); final String field = !StringUtils.isEmpty(keyField) ? keyField : this.field; rangeBuilder.field(field); for (Entry entry : entries) { DoubleEntry doubleEntry = (DoubleEntry) entry; rangeBuilder.addRange(validateValue(doubleEntry.getFrom(), Double.NEGATIVE_INFINITY), validateValue(doubleEntry.getTo(), Double.POSITIVE_INFINITY)); } rangeBuilder.subAggregation(AggregationBuilders.extendedStats(INTERNAL_STATS).field(field)); if(!StringUtils.isEmpty(valueField)){ rangeBuilder.subAggregation(AggregationBuilders.sum(RANGE_INTERNAL_SUM).field(valueField)); } return rangeBuilder; }
/** * Get AggregationBuilder to calculate sum, avg and doc count for given classifier. * @param classifierName Name of classifier * @return AggregationBuilder with required configuration */ private static TermsBuilder getClassifierAggregationBuilder(String classifierName) { String probabilityField = classifierName + "_probability"; return AggregationBuilders.terms("by_class").field(classifierName) .subAggregation( AggregationBuilders.avg("avg_probability").field(probabilityField) ) .subAggregation( AggregationBuilders.sum("sum_probability").field(probabilityField) ); }
switch (field.getName().toUpperCase()) { case "SUM": builder = AggregationBuilders.sum(field.getAlias()); return addFieldToAgg(field, builder); case "MAX":
private TermsAggregationBuilder getGroupsTermBuilder(GroupRequest groupRequest, int index) { List<Group> groups = groupRequest.getGroups(); Group group = groups.get(index); String aggregationName = getGroupByAggregationName(group.getField()); TermsAggregationBuilder termsBuilder = AggregationBuilders.terms(aggregationName); termsBuilder .field(group.getField()) .size(accessConfig.getMaxSearchGroups()) .order(getElasticsearchGroupOrder(group.getOrder())); if (index < groups.size() - 1) { termsBuilder.subAggregation(getGroupsTermBuilder(groupRequest, index + 1)); } Optional<String> scoreField = groupRequest.getScoreField(); if (scoreField.isPresent()) { SumAggregationBuilder scoreSumAggregationBuilder = AggregationBuilders.sum(getSumAggregationName(scoreField.get())).field(scoreField.get()).missing(0); termsBuilder.subAggregation(scoreSumAggregationBuilder); } return termsBuilder; }
break; case Expression.SUM: aggregationBuilder = AggregationBuilders.sum(function.toParsedText()).field(jPAColumnName); break; case Expression.AVG:
private AbstractAggregationBuilder parseStatsAggregation(SQLAggregateExpr aggExpr, String fieldName) { ElasticSqlMethodInvokeHelper.checkStatAggMethod(aggExpr); String methodName = aggExpr.getMethodName(); if (ElasticSqlMethodInvokeHelper.AGG_MIN_METHOD.equalsIgnoreCase(methodName)) { return AggregationBuilders.min(String.format("%s_%s", ElasticSqlMethodInvokeHelper.AGG_MIN_METHOD, fieldName)).field(fieldName); } if (ElasticSqlMethodInvokeHelper.AGG_MAX_METHOD.equalsIgnoreCase(methodName)) { return AggregationBuilders.max(String.format("%s_%s", ElasticSqlMethodInvokeHelper.AGG_MAX_METHOD, fieldName)).field(fieldName); } if (ElasticSqlMethodInvokeHelper.AGG_AVG_METHOD.equalsIgnoreCase(methodName)) { return AggregationBuilders.avg(String.format("%s_%s", ElasticSqlMethodInvokeHelper.AGG_AVG_METHOD, fieldName)).field(fieldName); } if (ElasticSqlMethodInvokeHelper.AGG_SUM_METHOD.equalsIgnoreCase(methodName)) { return AggregationBuilders.sum(String.format("%s_%s", ElasticSqlMethodInvokeHelper.AGG_SUM_METHOD, fieldName)).field(fieldName); } throw new ElasticSql2DslException(String.format("[syntax error] UnSupport agg method call[%s]", methodName)); } }
).addAggregation( AggregationBuilders.terms("by_product_code").field("product_code.keyword").size(2000) //按货号分组,最多查500个货号.SKU直接改字段名字就可以 .subAggregation(AggregationBuilders.sum("quantity").field("quantity")) //分组计算销量汇总 .subAggregation(AggregationBuilders.sum("amount").field("amount")) //分组计算实付款汇总,需要加其他汇总的在这里依次加 .subAggregation(PipelineAggregatorBuilders.bucketSelector("sales_bucket_filter",script,"quantity"))//查询是否大于指定值 .order(BucketOrder.aggregation("amount", false))) //分组排序
agg = AggregationBuilders.min(metric.getAggName()); } else if(metric.getOp() == Operation.SUM) { agg = AggregationBuilders.sum(metric.getAggName());
/** * Creates an AggregationBuilder for the supplied type */ public AggregationBuilder toBuilder(String type) { switch (type) { case AGG_CARDINALITY: return AggregationBuilders.cardinality(getId()).field(getField()); case AGG_COUNT: return AggregationBuilders.count(getId()).field(getField()); case AGG_SUM: return AggregationBuilders.sum(getId()).field(getField()); case AGG_AVG: return AggregationBuilders.avg(getId()).field(getField()); case AGG_MAX: return AggregationBuilders.max(getId()).field(getField()); case AGG_MIN: return AggregationBuilders.min(getId()).field(getField()); default: throw new IllegalArgumentException("Unknown aggregate type: " + type); } }
switch (field.getName().toUpperCase()) { case "SUM": builder = AggregationBuilders.sum(field.getAlias()); return addFieldToAgg(field, builder); case "MAX":
break; case Expression.SUM: aggregationBuilder = AggregationBuilders.sum(function.toParsedText()).field(jPAColumnName); break; case Expression.AVG: