如何迁移Aggregation自定义Query并执行NativeSearchQuery到NativeQuery?

问题描述 投票:0回答:0

您好论坛,

  We have use Java 11, and spring boot 2.7.1 for using spring-data-elasticsearch for building api for aggregation also complex aggregation using NativeSearchQueryBuilder and it's job is done very smoothly, But Now unfortunetly our requirement to upgrade our java version to 17 and spring boot version 3.1.0 Now after upgrading NativeSearchQueryBuilder and they suggest to use NativeQueryBuilder but how we can be migrate our bulk of reports of aggregation to compitable with NativeQueryBuilder?

我们尝试使用在 NativeSearchQuery searchQuery 中使用的聚合查询来升级我们的代码库 = NativeSearchQueryBuilder() 对象现在在 java 17 和 spring-boot 3.1.0 的升级中已被弃用,那么我们如何开发或迁移与 NativeQuery 兼容的所有代码?

TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders.terms(AppConstants.GROUP_BY_CORPORATE_ID)
                .field(AppConstants.CORPORATE_ID)
                .order(BucketOrder.aggregation(AppConstants.TOTAL_COUNT_CORPORATE, false))
                .subAggregation(AggregationBuilders.count(AppConstants.TOTAL_COUNT_CORPORATE).field(AppConstants.DEBIT_AMOUNT))
                .subAggregation(AggregationBuilders.sum(AppConstants.TOTAL_AMOUNT_CORPORATE).field(AppConstants.DEBIT_AMOUNT));

        NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
                .withQuery(boolQueryBuilder)
                .withAggregations(termsAggregationBuilder)
                .build();

        SearchHits<TxnMaster> response;
        try {
            response = elasticsearchRestTemplate.search(searchQuery, TxnMaster.class);
        } catch (Exception e) {

所以上面的 NativeSearchQuery 已被弃用,那么我们如何在 NativeQuery 或 NativeQueryBuilder 中实现相同的聚合和所有 bool 查询?

elasticsearch spring-data spring-data-elasticsearch java-17
© www.soinside.com 2019 - 2024. All rights reserved.