Spring数据Elasticsearch将Elasticsearch聚合查询转换为代码


{
"query": {
"bool": {
"must": [
{
"term": {
"id": {
"value": 1111
}
}
}
]
}
},
"aggs": {
"sequence": {
"terms": {
"field": "sequence.keyword"
},
"aggregations": {
"amount": {
"sum": {
"field": "amount"
}
}
}
},
"totalAmount": {
"sum_bucket": {
"buckets_path": "sequence>amount"
}
}
}
}

Spring Data ElasticSearch 3.2

final SearchQuery searchQuery =
new NativeSearchQueryBuilder()
.withQuery(QueryHelper.boolQueryBuilder(id))
.addAggregation(
terms("sequence")
.field("sequence.keyword")
.subAggregations(subAggregations()))
.addAggregation(sumBucket("sum_bucket", "sequence>amount"))
.build();

现在,由于NativeSearchQueryBuilder的addAggregation方法接受AbstractAggregationBuilder,sumBucket是PipelineAgregationBuilder类型,由于编译错误,无法将此值传递给addAggregate(sumBucket("sum_bucket","sequence>amount"(,知道如何使用sumBucket进行术语聚合和java编写吗?

我刚刚检查了Spring Data Elasticsearch和Elasticsearch本身的代码。Spring Data Elasticsearch目前无法使用PipelineAggregationBuilder派生的聚合。

我不知道为什么Elasticsearch有两个不同的聚合类层次结构,但Spring Data Elasticsearch目前只能处理AggregationBuilder而不能处理PipelineAggregationBuilder派生类。

我为此在Jira上创建了一个问题。

最新更新