从 4.1.x 升级到 4.2.x

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

弃用

@Document 参数

与索引设置相关的 @Document 注释的参数(useServerConfigurationshards. replicasrefreshIntervallindexStoretype)已移至 @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 语句即可。

刷新行为

如果 RefreshPolicy 不为 null,则 ElasticsearchOperationsReactiveElasticsearchOperations 现在将显式地将模板上的 RefreshPolicy 用于写请求。如果刷新策略为 null,则不会执行任何特殊操作,因此将使用集群默认值。在此版本之前,ElasticsearchOperations 一直使用集群默认值。

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

刷新配置

当使用 ElasticsearchConfigurationSupportAbstractElasticsearchConfigurationAbstractReactiveElasticsearchConfigurationElasticsearch 客户端 中配置 Spring Data Elasticsearch 时,刷新策略将被初始化为 null。以前,响应式代码将其初始化为 IMMEDIATE,现在响应式和非响应式代码显示相同行为。

方法返回类型

采用查询的删除方法

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

multiget 方法

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

现在,multiget 方法为每个请求的 ID 返回一个 MultiGetItem。其中包含有关故障(例如不存在的索引)的信息,以及该项目是否存在(如果存在,则包含在 `MultiGetItem` 中)的信息。