Example usage for org.springframework.data.elasticsearch.core.query NativeSearchQueryBuilder build

List of usage examples for org.springframework.data.elasticsearch.core.query NativeSearchQueryBuilder build

Introduction

In this page you can find the example usage for org.springframework.data.elasticsearch.core.query NativeSearchQueryBuilder build.

Prototype

public NativeSearchQuery build() 

Source Link

Usage

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;
}