從 4.2.x 升級到 4.3.x

本節描述了從版本 4.2.x 到 4.3.x 的重大更改,以及如何用新引入的功能替換已刪除的功能。

Elasticsearch 正在開發一個新的客戶端來替換 RestHighLevelClient,因為 RestHighLevelClient 使用了來自 Elasticsearch 核心庫的程式碼,而這些庫不再是 Apache 2 許可的。Spring Data Elasticsearch 也在為這一變化做準備。這意味著 *Operations 介面的內部實現需要改變——如果使用者使用像 ElasticsearchOperationsReactiveElasticsearchOperations 這樣的介面進行程式設計,這應該不是問題。如果您直接使用像 ElasticsearchRestTemplate 這樣的實現類,您將需要適應這些更改。

Spring Data Elasticsearch 還從其 API 類和方法中移除或替換了 org.elasticsearch 包中類的使用,僅在實現 Elasticsearch 訪問的內部使用它們。對於使用者來說,這意味著一些曾被使用的列舉類將被替換為 org.springframework.data.elasticsearch 中具有相同值的列舉,這些列舉在內部被對映到 Elasticsearch 的列舉上。

對於那些無法輕易替換的類,其使用被標記為已棄用,我們正在開發替代方案。

有關詳細資訊,請檢視已棄用重大更改部分。

已棄用

suggest 方法

SearchOperations 中,以及在 ElasticsearchOperations 中,接受 org.elasticsearch.search.suggest.SuggestBuilder 作為引數並返回 org.elasticsearch.action.search.SearchResponsesuggest 方法已被棄用。請改用 SearchHits<T> search(Query query, Class<T> clazz),傳入一個可以包含 SuggestBuilderNativeSearchQuery,並從返回的 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 版本之前,Queryfields 屬性被解釋並新增到 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

Completion 類

org.springframework.data.elasticsearch.core.completion 包中的類已移至 org.springframework.data.elasticsearch.core.suggest

其他重新命名

org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentPropertyConverter 介面已重新命名為 org.springframework.data.elasticsearch.core.mapping.PropertyValueConverter。同樣,名為 XXPersistentPropertyConverter 的實現類已重新命名為 XXPropertyValueConverter

© . This site is unofficial and not affiliated with VMware.