从 4.1.x 升级到 4.2.x

本节描述了从版本 4.1.x 到 4.2.x 的破坏性变更,以及如何使用新引入的功能替代已被移除的功能。spring-doc.cadn.net.cn

弃用

@Document 参数

@Document 注解中与索引设置相关的参数(useServerConfigurationshardsreplicasrefreshIntervallindexStoretype)已移至 @Setting 注解。在 @Document 中仍可使用,但已弃用。spring-doc.cadn.net.cn

移除

用于在实体中设置评分返回值的 @Score 注解已在 4.0 版本中被弃用并移除。 评分值将在封装返回实体的 SearchHit 实例中返回。spring-doc.cadn.net.cn

org.springframework.data.elasticsearch.ElasticsearchException 类已被移除。 剩余的用法已替换为 org.springframework.data.mapping.MappingExceptionorg.springframework.dao.InvalidDataAccessApiUsageExceptionspring-doc.cadn.net.cn

已弃用的 ScoredPageScrolledPage@AggregatedPage 及其实现已被移除。spring-doc.cadn.net.cn

已弃用的 GetQueryDeleteQuery 已被移除。spring-doc.cadn.net.cn

来自 ReactiveSearchOperationsReactiveDocumentOperations 的已弃用 find 方法已被移除。spring-doc.cadn.net.cn

重大变更

刷新策略

枚举包已更改

在 4.1 版本中,可以通过在自定义配置类中重写方法 AbstractReactiveElasticsearchConfiguration.refreshPolicy() 来为 ReactiveElasticsearchTemplate 配置刷新策略。 该方法的返回值是 org.elasticsearch.action.support.WriteRequest.RefreshPolicy 类的一个实例。spring-doc.cadn.net.cn

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

刷新行为

ElasticsearchOperationsReactiveElasticsearchOperations 现在如果非空,将显式使用模板上为写请求设置的 RefreshPolicy。 如果刷新策略为 null,则不执行任何特殊操作,因此将使用集群默认值。在此版本之前,ElasticsearchOperations 始终使用集群默认值。spring-doc.cadn.net.cn

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

刷新配置

当按照 Elasticsearch 客户端 中所述,使用 ElasticsearchConfigurationSupportAbstractElasticsearchConfigurationAbstractReactiveElasticsearchConfiguration 配置 Spring Data Elasticsearch 时,刷新策略将初始化为 null。 此前,响应式代码将其初始化为 IMMEDIATE,现在响应式和非响应式代码表现出相同的行为。spring-doc.cadn.net.cn

方法返回类型

删除接受 Query 的方法

以前,响应式方法返回一个包含已删除文档数量的 Mono<Long>,而非响应式版本则为 void。现在它们返回一个 Mono<ByQueryResponse>,其中包含有关已删除文档及可能发生的错误的更详细信息。spring-doc.cadn.net.cn

multiget 方法

multiget 的先前实现仅在非响应式实现中以 List<T>、在响应式实现中以 Flux<T> 返回找到的实体。如果请求中包含未找到的 ID,则无法获知这些 ID 缺失的信息。用户需要比较返回的 ID 与请求的 ID,以找出哪些 ID 缺失。spring-doc.cadn.net.cn

现在,multiget 方法会为每个请求的 id 返回一个 MultiGetItem。其中包含有关失败的信息(例如不存在的索引),以及该项是否存在的信息(如果存在,则包含在 `MultiGetItem` 中;否则不包含)。spring-doc.cadn.net.cn