You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot3迁移:新版Java Elasticsearch客户端中FiltersAggregator.KeyedFilter的替代方案

Spring Boot 3迁移:新版Java Elasticsearch客户端中FiltersAggregator.KeyedFilter的替代方案

在新版Java Elasticsearch客户端(适配Elasticsearch 8.x及Spring Boot 3的版本)中,FiltersAggregator.KeyedFilter已被弃用,替代方案可通过以下两种方式实现带键的过滤器聚合:

方式一:逐个添加带键过滤器

直接使用FiltersAggregationBuilder的addFilter方法,依次传入键名和对应的查询条件:

import org.elasticsearch.search.aggregations.bucket.filter.FiltersAggregationBuilder;
import org.elasticsearch.index.query.QueryBuilders;

FiltersAggregationBuilder aggregation = FiltersAggregationBuilder.filters("agg")
        .addFilter("men", QueryBuilders.termQuery("gender", "male"))
        .addFilter("women", QueryBuilders.termQuery("gender", "female"));

方式二:批量构建带键过滤器

借助Filters.KeyedFilter(新版包路径为org.elasticsearch.search.aggregations.bucket.filter.Filters.KeyedFilter)批量构建过滤器集合,再传入聚合构建器:

import org.elasticsearch.search.aggregations.bucket.filter.Filters;
import org.elasticsearch.search.aggregations.bucket.filter.FiltersAggregationBuilder;
import org.elasticsearch.index.query.QueryBuilders;

Filters filters = new Filters(
        new Filters.KeyedFilter("men", QueryBuilders.termQuery("gender", "male")),
        new Filters.KeyedFilter("women", QueryBuilders.termQuery("gender", "female"))
);

FiltersAggregationBuilder aggregation = FiltersAggregationBuilder.filters("agg", filters);

核心说明

新版客户端将原FiltersAggregator.KeyedFilter迁移至Filters.KeyedFilter类下,同时调整了AggregationBuilders.filters()的重载逻辑,上述两种写法均能完全替代旧版的聚合配置方式,且更符合新版API的设计规范。

内容的提问来源于stack exchange,提问作者predator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 17:55:59