Elasticsearch Подагрегация Tophits JAVA API не работает - PullRequest
0 голосов
/ 18 июня 2019

Я хочу кодировать агрегирование эластичного поиска в API JAVA, чтобы найти свертывание полей и группировку результатов.

Ниже показан код агрегации json. Я получил этот код из документов эластичного поиска

Агрегация 'dedup_by_score' имеет субагрегацию, называемую агрегацией 'top_hit', и использует ее в качестве агрегации для упорядочения сегментов.

... some query
  "aggs": {
    "dedup_by_score": {
      "terms": {
        "field": "keyword",
        "order": {
          "top_hit": "desc"
        },
        "size": 10
      },
      "aggs": {
        "top_hit": {
          "max": {
            "script": {
              "source": "_score"
            }
          }
        }
      }
    }
  }

Я хочу преобразовать этот запрос json в JAVA

И это то, что я уже пробовал в JAVA

AggregationBuilder aggregation = AggregationBuilders.terms("dedup_by_score")
    .field("keyword")
    .order(BucketOrder.aggregation("top_hit", false))
    .size(10)
    .subAggregation(
        AggregationBuilders.topHits("top_hit")
        .subAggregation(
            AggregationBuilders.max("max").script(new Script("_score"))
        )
    );

Но я получил ошибку, как показано ниже, от Elasticsearch

{
"type":"aggregation_initialization_exception",
"reason":"Aggregator [top_hit] of type [top_hits] cannot accept sub-aggregations"
}

Как я могу исправить этот код Java?Я использую версию Elasticsearch 6.7.1.

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...