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

从 4.2.x 升级到 4.3.x

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

Elasticsearch 正在开发一个新的客户端,该客户端将取代RestHighLevelClient因为RestHighLevelClient使用来自 Elasticsearch 核心库的代码,这些库不再获得 Apache 2 许可。 Spring Data Elasticsearch 也在为这一变化做准备。 这意味着在内部,对于*Operations接口需要更改 - 如果用户针对像ElasticsearchOperationsReactiveElasticsearchOperations. 如果您使用的是实现类,例如ElasticsearchRestTemplate直接,您将需要适应这些变化。spring-doc.cadn.net.cn

Spring Data Elasticsearch 还从org.elasticsearchpackages 的 API 类和方法,仅在实现对 Elasticsearch 的访问的实现中使用它们。 对于用户来说,这意味着使用的一些枚举类将被位于org.springframework.data.elasticsearch使用相同的值时,这些值在内部映射到 Elasticsearch 值上。spring-doc.cadn.net.cn

使用类的地方无法轻松替换,这种用法被标记为已弃用,我们正在努力替换。spring-doc.cadn.net.cn

查看弃重大变更部分以了解更多详细信息。spring-doc.cadn.net.cn

弃用

建议方法

SearchOperations,依此类推ElasticsearchOperations此外,suggest方法org.elasticsearch.search.suggest.SuggestBuilder作为参数并返回一个org.elasticsearch.action.search.SearchResponse已被弃用。 用SearchHits<T> search(Query query, Class<T> clazz)相反,传入NativeSearchQuery其中可以包含一个SuggestBuilder并从返回的SearchHit<T>.spring-doc.cadn.net.cn

ReactiveSearchOperations新的suggest方法返回一个Mono<org.springframework.data.elasticsearch.core.suggest.response.Suggest>现在。 这里也弃用了旧方法。spring-doc.cadn.net.cn

重大变更

删除org.elasticsearch类。

  • org.springframework.data.elasticsearch.annotations.CompletionContext注释属性type()已从org.elasticsearch.search.suggest.completion.context.ContextMapping.Typeorg.springframework.data.elasticsearch.annotations.CompletionContext.ContextMappingType,则可用的枚举值相同。spring-doc.cadn.net.cn

  • org.springframework.data.elasticsearch.annotations.Document注释versionType()属性已更改为org.springframework.data.elasticsearch.annotations.Document.VersionType,则可用的枚举值相同。spring-doc.cadn.net.cn

  • org.springframework.data.elasticsearch.core.query.Query接口searchType()属性已更改为org.springframework.data.elasticsearch.core.query.Query.SearchType,则可用的枚举值相同。spring-doc.cadn.net.cn

  • org.springframework.data.elasticsearch.core.query.Query接口的返回值timeout()改为java.time.Duration.spring-doc.cadn.net.cn

  • SearchHits<T>`class does not contain the `org.elasticsearch.search.aggregations.Aggregations了。 相反,它现在包含org.springframework.data.elasticsearch.core.AggregationsContainer<T>class 其中T是所使用的基础客户端的具体聚合类型。 目前,这将是一个org .springframework.data.elasticsearch.core.clients.elasticsearch7.ElasticsearchAggregations对象;稍后将提供不同的实现。 对ReactiveSearchOperations.aggregate()函数,现在返回一个Flux<AggregationContainer<?>>. 需要更改使用聚合的程序,以将返回值强制转换为适当的类以进一步处理它。spring-doc.cadn.net.cn

  • 方法可能会抛出org.elasticsearch.ElasticsearchStatusException现在会扔org.springframework.data.elasticsearch.RestStatusException相反。spring-doc.cadn.net.cn

处理 Query 的 field 和 sourceFilter 属性

在 4.2 版之前,fields属性Query被解释并添加到sourceFilter. 这是不正确的,因为这些对于 Elasticsearch 来说是不同的东西。 这已得到纠正。 因此,依赖于fields指定应从文档的_source' and should be changed to use the `sourceFilter.spring-doc.cadn.net.cn

search_type默认值

的默认值search_type在 Elasticsearch 中是query_then_fetch. 现在,这也被设置为默认值Query实现,之前设置为dfs_query_then_fetch.spring-doc.cadn.net.cn

BulkOptions 更改

的某些属性org.springframework.data.elasticsearch.core.query.BulkOptionsclass 更改了它们的类型:spring-doc.cadn.net.cn

指数期权变化

Spring Data Elasticsearch 现在使用org.springframework.data.elasticsearch.core.query.IndicesOptions而不是org.elasticsearch.action.support.IndicesOptions.spring-doc.cadn.net.cn

结业课程

包中的类org.springframework.data.elasticsearch.core.completion已移至org.springframework.data.elasticsearch.core.suggest.spring-doc.cadn.net.cn

其他更名

org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentPropertyConverterinterface 已重命名为org.springframework.data.elasticsearch.core.mapping.PropertyValueConverter. 同样,名为 XXPersistentPropertyConverter 的实现类已重命名为 XXPropertyValueConverterspring-doc.cadn.net.cn