此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Data Elasticsearch 5.5.2spring-doc.cadn.net.cn

从 4.1.x 升级到 4.2.x

本节介绍从 4.1.x 版到 4.2.x 版的重大更改,以及如何将删除的功能替换为新引入的功能。spring-doc.cadn.net.cn

弃用

@Document参数

的参数@Document与索引设置相关的注释 (useServerConfiguration,shards.replicas,refreshIntervallindexStoretype) 已移至@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.InvalidDataAccessApiUsageException.spring-doc.cadn.net.cn

已弃用的ScoredPage,ScrolledPage @AggregatedPage和实现已被删除。spring-doc.cadn.net.cn

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

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

重大变更

刷新策略

枚举包已更改

在 4.1 中,可以为ReactiveElasticsearchTemplate通过重写方法AbstractReactiveElasticsearchConfiguration.refreshPolicy()在自定义配置类中。 此方法的返回值是类的实例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,则在写入请求的模板上设置。 如果刷新策略为 null,则不会执行任何特殊作,因此使用集群默认值。ElasticsearchOperations在此版本之前始终使用集群默认值。spring-doc.cadn.net.cn

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

刷新配置

在配置 Spring Data Elasticsearch 时,如 Elasticsearch Clients 中所述,使用ElasticsearchConfigurationSupport,AbstractElasticsearchConfigurationAbstractReactiveElasticsearchConfiguration刷新策略将初始化为null. 以前,响应式代码将其初始化为IMMEDIATE,现在响应式和非响应式代码显示相同的行为。spring-doc.cadn.net.cn

方法返回类型

删除接受 Query 的方法

响应式方法之前返回了Mono<Long>随着已删除文档的数量增加,非反应性版本无效。他们现在返回一个Mono<ByQueryResponse>其中包含有关已删除文档和可能发生的错误的更多详细信息。spring-doc.cadn.net.cn

multiget 方法

multiget previousl 的实现仅返回在List<T>用于非响应式实现,并在Flux<T>用于响应式实现。如果请求包含未找到的 ID,则无法提供缺少这些 ID 的信息。用户需要将返回的 ID 与请求的 ID 进行比较,以找到 哪些是缺失的。spring-doc.cadn.net.cn

现在multiget方法返回一个MultiGetItem对于每个请求的 ID。这包含有关失败的信息(如不存在的索引)以及该项是否存在(然后它包含在“MultiGetItem”中)的信息。spring-doc.cadn.net.cn