從 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

Enum 套件已變更

在 4.1 版本中,可以透過在自訂配置類別中覆寫 AbstractReactiveElasticsearchConfiguration.refreshPolicy() 方法來配置 ReactiveElasticsearchTemplate 的重新整理策略。此方法的傳回值是 org.elasticsearch.action.support.WriteRequest.RefreshPolicy 類別的實例。

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

重新整理行為

ElasticsearchOperationsReactiveElasticsearchOperations 現在明確地使用範本上設定的 RefreshPolicy 來處理寫入請求 (如果未設定為 null)。如果重新整理策略為 null,則不會執行任何特殊操作,因此會使用叢集預設值。ElasticsearchOperations 在此版本之前始終使用叢集預設值。

針對 ElasticsearchRepositoryReactiveElasticsearchRepository 提供的實作將在重新整理策略為 null 時執行明確的重新整理。這與先前版本中的行為相同。如果設定了重新整理策略,則儲存庫也將使用該策略。

重新整理配置

當像 Elasticsearch 用戶端 中描述的那樣,透過使用 ElasticsearchConfigurationSupportAbstractElasticsearchConfigurationAbstractReactiveElasticsearchConfiguration 配置 Spring Data Elasticsearch 時,重新整理策略將初始化為 null。先前反應式程式碼將其初始化為 IMMEDIATE,現在反應式和非反應式程式碼顯示相同的行為。

方法傳回類型

採用 Query 的 delete 方法

反應式方法先前傳回 Mono<Long> 以及已刪除的文件數量,非反應式版本為 void。現在它們傳回 Mono<ByQueryResponse>,其中包含有關已刪除的文件以及可能發生的錯誤的更詳細資訊。

multiget 方法

multiget 的實作先前僅在 List<T> 中傳回非反應式實作的已找到實體,在 Flux<T> 中傳回反應式實作的已找到實體。如果請求包含未找到的 ID,則缺少這些 ID 的資訊將不可用。使用者需要將傳回的 ID 與請求的 ID 進行比較,以找出哪些 ID 遺失。

現在 multiget 方法針對每個請求的 ID 傳回一個 MultiGetItem。這包含有關失敗 (例如不存在的索引) 的資訊,以及項目是否存在的資訊 (然後它包含在 `MultiGetItem) 中)。