Я хочу кодировать агрегирование эластичного поиска в 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.
Заранее спасибо