spring-boot - 使用Java查询DSL使 “query + aggregations” elasticsearch

标签 spring-boot elasticsearch dsl

是否可以使用java-query-dsl建立具有聚合(elasticsearch)的查询?

最佳答案

ElasticSearch提供了一个客户端库,可帮助您构建搜索。您可以找到更多关于here的信息。
以下是如何执行此操作的示例:

// build the client
    HttpHost host = new HttpHost("localhost", 9200, "http");
    RestHighLevelClient client = new RestHighLevelClient(RestClient
            .builder(new HttpHost[]{host}));

    // build the search (set the conditions here)
    BoolQueryBuilder boolQueryBuilder = boolQuery();
    boolQueryBuilder.must(QueryBuilders.rangeQuery("age")
            .from(25)
            .to(40));

    // build the aggregations (set the aggregations here)
    TermsAggregationBuilder groupByGender = AggregationBuilders.terms("gender")
            .field("gender")
            .size(5);

    SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
    sourceBuilder.query(boolQueryBuilder);
    sourceBuilder.aggregation(groupByGender);

    // create and execute the search request
    SearchRequest request = new SearchRequest()
            .indices("customers")
            .types("customer")
            .allowPartialSearchResults(false)
            .source(sourceBuilder)
            .requestCache(true);

    SearchResponse response = client.search(request, RequestOptions.DEFAULT);

会产生类似:
GET customers/customer/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "age": {
              "gt": 25,
              "lt": 40
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "gender": {
      "terms": {
        "field": "gender",
        "size": 5
      }
    }
  }
}

关于spring-boot - 使用Java查询DSL使 “query + aggregations” elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56770445/

相关文章:

java - Spring Boot 无法解析 yaml 中 spring.profiles.active 属性的属性占位符

java - 如何在 Spring Boot 中扩展类而不更改 MySQL 架构?

file-upload - 所需的 MultipartFile 参数 'file' 不存在

elasticsearch - Elasticsearch地理空间搜索,索引设置问题

Ruby 元编程

c# - 使用 IronPython 简化为 C# 应用程序编写的 DSL

javascript - 将 Blob 数据作为 MultipartFile 从 Angular6 客户端发送到 Spring Boot API

elasticsearch - ElasticSearch 的重新索引 api 完成后,我的目标索引的状态是什么?

elasticsearch - 如何只返回嵌套字段中匹配的对象,而不返回整个对象?

c# - 如何使用NEST执行子聚合?