從 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
。