List of usage examples for org.springframework.data.elasticsearch.core.query NativeSearchQueryBuilder build
public NativeSearchQuery build()
From source file:io.curly.bloodhound.query.search.ElasticQueryBuilder.java
public QueryBuilder build(final String query) { final MultiValueMap<String, String> valueMap = transpiler.execute(query); NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder(); if (valueMap.containsKey("text")) { builder.withQuery(new MultiMatchQueryBuilder(valueMap.get("text").stream().collect(joining()), "description", CATEGORY, LANGUAGES, TAGS)); } else {// w ww . ja v a2 s. c o m if (valueMap.containsKey(CATEGORY)) { builder.withQuery( new MultiMatchQueryBuilder(valueMap.get(CATEGORY).stream().collect(joining()), CATEGORY)); } else if (valueMap.containsKey(LANGUAGES)) { builder.withQuery( new MultiMatchQueryBuilder(valueMap.get(LANGUAGES).stream().collect(joining()), LANGUAGES)); } else if (valueMap.containsKey(TAGS)) { builder.withQuery(new MultiMatchQueryBuilder(valueMap.get(TAGS).stream().collect(joining()), TAGS)); } } return builder.build().getQuery(); }
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;/* w w w. j a v 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
@SuppressWarnings("rawtypes") private List<ServiceDetails> getServiceDetails(final ApplicationIndexRequest applicationIndexRequest, final Date fromDate, final Date toDate) { final List<ServiceDetails> serviceDetailsList = new ArrayList<>(); AggregationBuilder aggregation;//from www. j a v a 2 s . c o m SearchQuery searchQueryColl; final ValueCountBuilder countBuilder = AggregationBuilders.count(TOTAL_COUNT).field(APPLICATION_NUMBER); final BoolQueryBuilder boolQuery = prepareWhereClause(applicationIndexRequest, fromDate, toDate); aggregation = AggregationBuilders.terms("by_service1").field(APPLICATION_TYPE).size(5) .subAggregation(countBuilder).order(Terms.Order.aggregation(TOTAL_COUNT, false)); final NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder().withIndices(APPLICATIONS_INDEX) .withQuery(boolQuery).addAggregation(aggregation); searchQueryColl = queryBuilder.build(); final Aggregations aggr = elasticsearchTemplate.query(searchQueryColl, response -> response.getAggregations()); final Map<String, Long> aggregationResults = new LinkedHashMap<>(); final StringTerms serviceAggr = aggr.get("by_service1"); ValueCount valueCount; for (final Terms.Bucket entry : serviceAggr.getBuckets()) { valueCount = entry.getAggregations().get(TOTAL_COUNT); aggregationResults.put(String.valueOf(entry.getKey()), valueCount.getValue()); } ServiceDetails serviceDetails; for (final Map.Entry<String, Long> entry : aggregationResults.entrySet()) { serviceDetails = new ServiceDetails(); serviceDetails.setServiceName(entry.getKey()); serviceDetails.setBeyondSLA( aggregationResults.get(entry.getKey()) == null ? 0 : aggregationResults.get(entry.getKey())); serviceDetailsList.add(serviceDetails); } return serviceDetailsList; }