Агрегирование с помощью Java High Level Rest Client - PullRequest
0 голосов
/ 23 сентября 2019

edit: я использую упругий поиск 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": [ ... ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...