【问题标题】:Retrieve aggregations using Spring Data Elasticsearch Reactive Template使用 Spring Data Elasticsearch Reactive Template 检索聚合
【发布时间】:2020-06-19 09:43:22
【问题描述】:

我们正在使用 Spring Data Elasticsearch 响应式模板

Query searchQuery = new NativeSearchQueryBuilder()
                .withQuery(queryBuilder)
                .withPageable(PageRequest.of(0, 10))
                .addAggregation(AggregationBuilders.terms("categories").field("category"))
                .build();

reactiveElasticsearchTemplate.search(searchQuery, documentType, IndexCoordinates.of(indexName))

作为回应,我们有 Flux<SearchHit<T>>,但没有检索聚合的方法。

如何检索聚合?

【问题讨论】:

    标签: elasticsearch spring-data spring-data-elasticsearch elasticsearch-aggregation


    【解决方案1】:

    ReactiveElasticsearchTemplateaggregate 方法。

    查看对应的API interface

    通量中的单个实体和反应部分中的聚合没有组合。

    【讨论】:

    • 谢谢,我也找到了这个拉取请求github.com/spring-projects/spring-data-elasticsearch/pull/203
    • 这个PR是关于解析聚合数据的,但它只考虑StringTerms和LongTerms桶,但是聚合要复杂得多。为了让 Spring Data Elasticsearch 支持解析聚合,我们需要处理更多的聚合情况。所以目前我们只返回 Elasticsearch 聚合。
    • 因此,如果我们想要返回命中和聚合,我们需要调用 2 个方法,每个方法都将返回 Flux<T>,而不是将这 2 个 Flux<T> 组合成 1 个 Flux<T>,是这个正确吗?
    • search 返回Flux<SearchHit<T>>aggregate 返回Flux<Aggregation>。返回的类型不同,聚合对象不是实体
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 2021-12-24
    相关资源
    最近更新 更多