ElasticSearch Convert Rest Query TO Транспортный Java-код клиента - PullRequest
0 голосов
/ 07 июня 2019

Заранее спасибо за помощь,

Я создал запрос упругого поиска _search, как показано ниже:

{
    "size" : 0,
  "aggs": {
    "attrs_root": {
      "nested": {
        "path": "tags"
      },
      "aggs": {
        "scope_term": {
          "terms": {
            "field": "tags.scope.keyword"
          },
          "aggs": {
            "tag_term": {
              "terms": {
                "field": "tags.tag.keyword"
              }
            }
          }
        }
      }
    }
  }
} 

Теперь я хочу преобразовать этот запрос в Java Elastic Search Transport Client 6.2.Я попытался с приведенным ниже кодом, но он не возвращает те же результаты.:

               NestedAggregationBuilder nested = AggregationBuilders.nested("attrs_root", "tags");
        NestedAggregationBuilder subAggregation = nested
                .subAggregation(AggregationBuilders.terms("scope_term").field("tags.scope.keyword"));
        subAggregation = subAggregation.subAggregation(AggregationBuilders.terms("tag_term").field("tags.tag.keyword"));
        requestBuilder.addAggregation(nested);
        response = requestBuilder.execute().actionGet();

Не могли бы вы дать мне знать, как я могу получить те же результаты?

Еще раз спасибо !!!

Ответы [ 2 ]

2 голосов
/ 07 июня 2019

Это хорошее начало, но вам просто нужно добавить scope_term как субагрегацию к вашей вложенной attrs_root агрегации:

NestedAggregationBuilder nested = AggregationBuilders.nested("attrs_root", "tags");
TermsAggregationBuilder field = AggregationBuilders.terms("scope_term").field("tags.scope.keyword");
field.subAggregation(AggregationBuilders.terms("tag_term").field("tags.tag.keyword"));

// add the next line
nested.subAggregation(field);
0 голосов
/ 07 июня 2019

Я нашел решение, как показано ниже:

 NestedAggregationBuilder nested = AggregationBuilders.nested("attrs_root", "tags");
            TermsAggregationBuilder field = AggregationBuilders.terms("scope_term").field("tags.scope.keyword");
            field.subAggregation(AggregationBuilders.terms("tag_term").field("tags.tag.keyword"));

            nested.subAggregation(field);

            requestBuilder.addAggregation(nested);
...