Java高级REST客户端的聚合

时间:2019-09-23 20:55:11

标签: java elasticsearch

编辑:我正在使用弹性搜索7.3.0

我正在尝试使用聚合和子聚合进行查询,但是SearchResponse中没有子聚合。

作为调试的一部分,我在单元测试中运行了查询,复制了查询,然后与邮递员手动运行。在那里,响应正是我所期望的,但是由于某种原因,在我的Java代码中,缺少了部分。

SearchRequest request = new SearchRequest("index");
SearchSourceBuidler search = new SearchSourceBuilder();

SortBuilder sortByDate = SortBuilders
                .fieldSort("date")
                .order(SortOrder.DESC);

// Getting the latest result for each bucket
TopHitsAggregationBuilder latestResults = AggregationBuilders
                .topHits("latest")
                .sort(sortByDate)
                .fetchSource("*","")
                .size(1);

// Aggregate per service
TermsAggregationBuilder perService = AggregationBuilders
                .terms("services")
                .field("service.service_id")
                .subAggregation(latestResults);

search.aggregation(perService);
search.size(1);

request.source(search);

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

这是生成的请求:

{
  "size": 0,
  "aggregations": {
    "services": {
      "terms": {
        "field": "service.service_id",
        "size": 10,
        "min_doc_count": 1,
        "shard_min_doc_count": 0,
        "show_term_doc_count_error": false,
        "order": [
          {
            "_count": "desc"
          },
          {
            "_key": "asc"
          }
        ]
      },
      "aggregations": {
        "latest": {
          "top_hits": {
            "from": 0,
            "size": 1,
            "version": false,
            "seq_no_primary_term": false,
            "explain": false,
            "_source": {
              "includes": [
                "*"
              ],
              "excludes": [
                ""
              ]
            },
            "sort": [
              {
                "date": {
                  "order": "desc"
                }
              }
            ]
          }
        }
      }
    }
  }
}

在我的代码中,响应为

{
  ...
  "aggregations": {
    "sterms#services": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": []
    }
  }
}

如果我手动运行相同的查询,我会得到

{
  ...
  "aggregations": {
        "services": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
                {
                    "key": "09045f59-3709-4769-8c92-d611f773a401",
                    "doc_count": 2,
                    "latest": {
                        "hits": {
                            "total": {
                                "value": 2,
                                "relation": "eq"
                            },
                            "max_score": null,
                            "hits": [ ... ]

0 个答案:

没有答案