從 4.1.x 升級到 4.2.x

本節描述了從版本 4.1.x 到 4.2.x 的重大變更,以及如何用新引入的特性替換已移除的特性。

已棄用

@Document 引數

@Document 註解中與索引設定相關的引數(useServerConfigurationshardsreplicasrefreshIntervallindexStoretype)已移至 @Setting 註解。在 @Document 中使用仍然可能,但已棄用。

已移除

用於設定實體中分數返回值的 @Score 註解已在版本 4.0 中棄用並已移除。分數值在封裝返回實體的 SearchHit 例項中返回。

org.springframework.data.elasticsearch.ElasticsearchException 類已移除。剩餘的用法已替換為 org.springframework.data.mapping.MappingExceptionorg.springframework.dao.InvalidDataAccessApiUsageException

已移除已棄用的 ScoredPageScrolledPage@AggregatedPage 及其實現。

已移除已棄用的 GetQueryDeleteQuery

已移除 ReactiveSearchOperationsReactiveDocumentOperations 中已棄用的 find 方法。

重大變更

RefreshPolicy

列舉包已變更

在 4.1 版本中,可以透過在自定義配置類中覆蓋 AbstractReactiveElasticsearchConfiguration.refreshPolicy() 方法來配置 ReactiveElasticsearchTemplate 的重新整理策略。此方法的返回值是 org.elasticsearch.action.support.WriteRequest.RefreshPolicy 類的一個例項。

現在配置必須返回 org.springframework.data.elasticsearch.core.RefreshPolicy。此列舉具有與之前相同的值並觸發相同的行為,因此只需調整 import 語句即可。

重新整理行為

ElasticsearchOperationsReactiveElasticsearchOperations 現在顯式地使用在模板上設定的 RefreshPolicy(如果非空)來處理寫請求。如果重新整理策略為 null,則不做任何特殊處理,從而使用叢集預設設定。在此版本之前,ElasticsearchOperations 總是使用叢集預設設定。

當重新整理策略為 null 時,為 ElasticsearchRepositoryReactiveElasticsearchRepository 提供的實現將執行顯式重新整理。這與之前版本的行為相同。如果設定了重新整理策略,則儲存庫也將使用該策略。

重新整理配置

當使用 ElasticsearchConfigurationSupportAbstractElasticsearchConfigurationAbstractReactiveElasticsearchConfiguration 配置 Spring Data Elasticsearch(如 Elasticsearch 客戶端中所述)時,重新整理策略將初始化為 null。以前,響應式程式碼將其初始化為 IMMEDIATE,現在響應式和非響應式程式碼表現出相同的行為。

方法返回型別

接受 Query 的 delete 方法

響應式方法之前返回一個包含刪除文件數量的 Mono<Long>,而非響應式版本返回 void。它們現在返回一個 Mono<ByQueryResponse>,其中包含有關刪除文件和可能發生的錯誤的更詳細資訊。

multiget 方法

multiget 的實現之前僅在非響應式實現中返回找到的實體(採用 List<T> 形式),在響應式實現中返回實體(採用 Flux<T> 形式)。如果請求包含未找到的 id,則無法獲得這些 id 缺失的資訊。使用者需要將返回的 id 與請求的 id 進行比較,以找出哪些缺失。

現在,multiget 方法為每個請求的 id 返回一個 MultiGetItem。這包含有關失敗(如不存在的索引)的資訊,以及該項是否存在(如果存在,則包含在 MultiGetItem 中)的資訊。