/** * Get AggregationBuilder by country without time constraints. * @param fieldName Name of field containing country code * @param classifierName Name of field containing country code * @return AggregationBuilder with required configuration */ private static TermsBuilder getClassifierAggregationBuilderByCountry(String fieldName, String classifierName) { return AggregationBuilders.terms("by_country").field(fieldName) .subAggregation(getClassifierAggregationBuilder(classifierName)); }
/** * 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) ); }
.subAggregation(AggregationBuilders.terms("attrIds") .field("attrValueList.productAttributeId") .subAggregation(AggregationBuilders.terms("attrValues") .field("attrValueList.value")) .subAggregation(AggregationBuilders.terms("attrNames") .field("attrValueList.name")))); builder.addAggregation(aggregationBuilder);
termsBuilder.subAggregation(topHitsBuilder);
TermsBuilder termBuilder = AggregationBuilders.terms("check_id"); MaxBuilder maxBuilder = AggregationBuilders.max("exec_time_epoch"); MinBuilder minBuilder = AggregationBuilders.min("exec_time_epoch"); termBuilder.subAggregation(maxBuilder); termBuilder.subAggregation(minBuilder); // ADD THIS: add another top_hits sub-aggregation which // - takes a single document // - sorted by exec_time_epoch desc TopHitsBuilder topHitsBuilder = AggregationBuilders.topHits("maxDoc") .setSize(1) .addSort("exec_time_epoch", SortOrder.DESC); termBuilder.subAggregation(topHitsBuilder); SearchQuery searchQuery = new NativeSearchQueryBuilder() .withQuery(matchAllQuery()) .addAggregation(termBuilder) .build(); Aggregations aggregations = elasticsearchTemplate.query(searchQuery, new ResultsExtractor<Aggregations>() { @Override public Aggregations extract(SearchResponse response) { return response.getAggregations(); } });
.order(Terms.Order.aggregation(SCORE_AGGREGATION, false)) .size(start + rows) .subAggregation( AggregationBuilders.max(SCORE_AGGREGATION) .script(new Script("_score", ScriptService.ScriptType.INLINE, "expression", null))) .subAggregation(topHitsBuilder);
termsAgg.subAggregation(subAgg);
.field("assets.attributes.npm.name") .size(v1SearchMaxResults) .subAggregation(AggregationBuilders.topHits("versions") .addSort(SortBuilders.fieldSort("assets.attributes.npm.search_normalized_version") .order(SortOrder.DESC))
termsBuilder.subAggregation(topHitsBuilder);
AggregationBuilders.terms("traceId_agg") .field("traceId") .subAggregation(AggregationBuilders.min("timestamps_agg") .field("timestamp_millis")) .order(Order.aggregation("timestamps_agg", false))
.subAggregation(topHitAggregation);
AggregationBuilders.terms(AGG_TERMS_STATS) .field(keyField) .subAggregation(AggregationBuilders.stats(AGG_STATS).field(valueField)) .order(termsOrder) .size(size)