从 4.1.x 升级到 4.2.x

本节描述了从版本 4.1.x 到 4.2.x 的重大变更,以及如何用新引入的特性替换已移除的特性。

已弃用

@Document 参数

@Document 注解中与索引设置相关的参数(useServerConfigurationshardsreplicasrefreshIntervallindexStoretype)已移至 @Setting 注解。在 @Document 中使用仍然可能,但已弃用。

已移除

用于设置实体中分数返回值的 @Score 注解已在版本 4.0 中弃用并已移除。分数值在封装返回实体的 SearchHit 实例中返回。

org.springframework.data.elasticsearch.ElasticsearchException 类已移除。剩余的用法已替换为 org.springframework.data.mapping.MappingExceptionorg.springframework.dao.InvalidDataAccessApiUsageException

已移除已弃用的 ScoredPageScrolledPage@AggregatedPage 及其实现。

已移除已弃用的 GetQueryDeleteQuery

已移除 ReactiveSearchOperationsReactiveDocumentOperations 中已弃用的 find 方法。

重大变更

RefreshPolicy

枚举包已变更

在 4.1 版本中,可以通过在自定义配置类中覆盖 AbstractReactiveElasticsearchConfiguration.refreshPolicy() 方法来配置 ReactiveElasticsearchTemplate 的刷新策略。此方法的返回值是 org.elasticsearch.action.support.WriteRequest.RefreshPolicy 类的一个实例。

现在配置必须返回 org.springframework.data.elasticsearch.core.RefreshPolicy。此枚举具有与之前相同的值并触发相同的行为,因此只需调整 import 语句即可。

刷新行为

ElasticsearchOperationsReactiveElasticsearchOperations 现在显式地使用在模板上设置的 RefreshPolicy(如果非空)来处理写请求。如果刷新策略为 null,则不做任何特殊处理,从而使用集群默认设置。在此版本之前,ElasticsearchOperations 总是使用集群默认设置。

当刷新策略为 null 时,为 ElasticsearchRepositoryReactiveElasticsearchRepository 提供的实现将执行显式刷新。这与之前版本的行为相同。如果设置了刷新策略,则存储库也将使用该策略。

刷新配置

当使用 ElasticsearchConfigurationSupportAbstractElasticsearchConfigurationAbstractReactiveElasticsearchConfiguration 配置 Spring Data Elasticsearch(如 Elasticsearch 客户端中所述)时,刷新策略将初始化为 null。以前,响应式代码将其初始化为 IMMEDIATE,现在响应式和非响应式代码表现出相同的行为。

方法返回类型

接受 Query 的 delete 方法

响应式方法之前返回一个包含删除文档数量的 Mono<Long>,而非响应式版本返回 void。它们现在返回一个 Mono<ByQueryResponse>,其中包含有关删除文档和可能发生的错误的更详细信息。

multiget 方法

multiget 的实现之前仅在非响应式实现中返回找到的实体(采用 List<T> 形式),在响应式实现中返回实体(采用 Flux<T> 形式)。如果请求包含未找到的 id,则无法获得这些 id 缺失的信息。用户需要将返回的 id 与请求的 id 进行比较,以找出哪些缺失。

现在,multiget 方法为每个请求的 id 返回一个 MultiGetItem。这包含有关失败(如不存在的索引)的信息,以及该项是否存在(如果存在,则包含在 MultiGetItem 中)的信息。