從 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> 中讀取建議結果。
在 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。