從 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
,可用的 enum 值相同。 -
在
org.springframework.data.elasticsearch.annotations.Document
註解中,versionType()
屬性已變更為org.springframework.data.elasticsearch.annotations.Document.VersionType
,可用的 enum 值相同。 -
在
org.springframework.data.elasticsearch.core.query.Query
介面中,searchType()
屬性已變更為org.springframework.data.elasticsearch.core.query.Query.SearchType
,可用的 enum 值相同。 -
在
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
的 include 列表中。這是錯誤的,因為對於 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
。