从 4.2.x 升级到 4.3.x
本节描述了从版本 4.2.x 到 4.3.x 的重大变更,以及如何用新引入的功能替代已移除的功能。
Elasticsearch 正在开发一个新的客户端,它将取代 Spring Data Elasticsearch 还从其 API 类和方法中移除或替换了对 对于无法轻松替换的类,其用法已被标记为已弃用,我们正在开发替代方案。 |
弃用
suggest 方法
在 SearchOperations
以及 ElasticsearchOperations
中,接受 org.elasticsearch.search.suggest.SuggestBuilder
作为参数并返回 org.elasticsearch.action.search.SearchResponse
的 suggest
方法已被弃用。请改用 SearchHits<T> search(Query query, Class<T> clazz)
方法,传入可以包含 SuggestBuilder
的 NativeSearchQuery
,并从返回的 SearchHit<T>
中读取 suggest 结果。
在 ReactiveSearchOperations
中,新的 suggest
方法现在返回 Mono<org.springframework.data.elasticsearch.core.suggest.response.Suggest>
。同样,旧的方法已被弃用。
重大变更
从 API 中移除 org.elasticsearch
类。
-
在
org.springframework.data.elasticsearch.annotations.CompletionContext
注解中,属性type()
已从org.elasticsearch.search.suggest.completion.context.ContextMapping.Type
更改为org.springframework.data.elasticsearch.annotations.CompletionContext.ContextMappingType
,可用的枚举值相同。 -
在
org.springframework.data.elasticsearch.annotations.Document
注解中,versionType()
属性已更改为org.springframework.data.elasticsearch.annotations.Document.VersionType
,可用的枚举值相同。 -
在
org.springframework.data.elasticsearch.core.query.Query
接口中,searchType()
属性已更改为org.springframework.data.elasticsearch.core.query.Query.SearchType
,可用的枚举值相同。 -
在
org.springframework.data.elasticsearch.core.query.Query
接口中,timeout()
的返回值已更改为java.time.Duration
。 -
SearchHits<T>
类不再包含org.elasticsearch.search.aggregations.Aggregations
。相反,它现在包含一个org.springframework.data.elasticsearch.core.AggregationsContainer<T>
类的实例,其中T
是所使用底层客户端的具体聚合类型。目前,这将是一个org .springframework.data.elasticsearch.core.clients.elasticsearch7.ElasticsearchAggregations
对象;稍后将提供不同的实现。同样的更改已应用于ReactiveSearchOperations.aggregate()
函数,它们现在返回Flux<AggregationContainer<?>>
。使用聚合的程序需要更改,将返回值转换为适当的类以进一步处理。 -
之前可能抛出
org.elasticsearch.ElasticsearchStatusException
的方法现在将抛出org.springframework.data.elasticsearch.RestStatusException
。
处理 Query 的 field 和 sourceFilter 属性
直到 4.2 版本,Query
的 fields
属性被解释并添加到 sourceFilter
的包含列表中。这是不正确的,因为对于 Elasticsearch 而言,它们是不同的东西。现在这已得到纠正。因此,依赖使用 fields
指定应从文档的 _source
返回哪些字段的代码可能不再工作,应改为使用 sourceFilter
。
search_type 默认值
Elasticsearch 中 search_type
的默认值是 query_then_fetch
。现在这也已设置为 Query
实现中的默认值,之前设置为 dfs_query_then_fetch
。
BulkOptions 变更
org.springframework.data.elasticsearch.core.query.BulkOptions
类的一些属性类型已更改
-
timeout
属性的类型已更改为java.time.Duration
。 -
refreshPolicy
属性的类型已更改为org.springframework.data.elasticsearch.core.RefreshPolicy
。
IndicesOptions 变更
Spring Data Elasticsearch 现在使用 org.springframework.data.elasticsearch.core.query.IndicesOptions
而不是 org.elasticsearch.action.support.IndicesOptions
。