List of usage examples for org.springframework.data.elasticsearch.core.query NativeSearchQueryBuilder addAggregation
public NativeSearchQueryBuilder addAggregation(AbstractAggregationBuilder aggregationBuilder)
From source file:org.egov.infra.elasticsearch.service.es.ApplicationDocumentService.java
private Aggregations getDocumentCounts(ApplicationIndexRequest applicationIndexRequest, Date fromDate, Date toDate, String aggregationName, String applicationStatus, String aggregationField, int size) { AggregationBuilder aggregation = null; SearchQuery searchQueryColl;/*from w w w. jav a 2s . c o m*/ ValueCountBuilder countBuilder = AggregationBuilders.count(TOTAL_COUNT).field(APPLICATION_NUMBER); BoolQueryBuilder boolQuery = prepareWhereClause(applicationIndexRequest, fromDate, toDate); if (StringUtils.isNotBlank(applicationStatus)) boolQuery = prepareQueryForApplicationStatus(applicationStatus, boolQuery); if (StringUtils.isNotBlank(aggregationName)) aggregation = AggregationBuilders.terms(aggregationName).field(aggregationField).size(size) .subAggregation(countBuilder); NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder().withIndices(APPLICATIONS_INDEX) .withQuery(boolQuery).addAggregation(countBuilder); if (StringUtils.isNotBlank(aggregationName)) searchQueryColl = queryBuilder.addAggregation(aggregation).build(); else searchQueryColl = queryBuilder.build(); return elasticsearchTemplate.query(searchQueryColl, response -> response.getAggregations()); }
From source file:org.egov.infra.elasticsearch.service.es.ApplicationDocumentService.java
/** * Fetch delayed days for aggregation based on service type * @param applicationIndexRequest/*from w w w . j a v a 2s . c o m*/ * @param fromDate * @param toDate * @param aggregationField * @param size * @return map */ private Map<String, Long> getDelayedDaysAggregate(ApplicationIndexRequest applicationIndexRequest, Date fromDate, Date toDate, String aggregationField, int size) { Sum sumAggr; Map<String, Long> delayMap = new HashMap<>(); BoolQueryBuilder boolQuery = prepareWhereClause(applicationIndexRequest, fromDate, toDate); boolQuery = boolQuery.must(QueryBuilders.rangeQuery(SLA_GAP).gt(0)); AggregationBuilder aggregationBuilder = AggregationBuilders.terms("by_service").field(aggregationField) .size(size).subAggregation(AggregationBuilders.sum(TOTAL_COUNT).field(SLA_GAP)); NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder().withIndices(APPLICATIONS_INDEX) .withQuery(boolQuery); SearchQuery searchQueryColl = queryBuilder.addAggregation(aggregationBuilder).build(); Aggregations aggregation = elasticsearchTemplate.query(searchQueryColl, response -> response.getAggregations()); StringTerms stringTerms = aggregation.get("by_service"); for (Terms.Bucket entry : stringTerms.getBuckets()) { sumAggr = entry.getAggregations().get(TOTAL_COUNT); delayMap.put(String.valueOf(entry.getKey()), (long) sumAggr.getValue()); } return delayMap; }