4.1.x から 4.2.x へのアップグレード
このセクションでは、バージョン 4.1.x から 4.2.x への重大な変更と、削除された機能を新しく導入された機能で置き換える方法について説明します。
削除
エンティティのスコア戻り値を設定するために使用されていた @Score
アノテーションは、バージョン 4.0 で非推奨となり、削除されました。スコア値は、返されたエンティティをカプセル化する SearchHit
インスタンスで返されます。
org.springframework.data.elasticsearch.ElasticsearchException
クラスは削除されました。残りの使用箇所は org.springframework.data.mapping.MappingException
および org.springframework.dao.InvalidDataAccessApiUsageException
に置き換えられました。
非推奨の ScoredPage
、ScrolledPage
@AggregatedPage
と実装は削除されました。
非推奨の GetQuery
および DeleteQuery
は削除されました。
ReactiveSearchOperations
および ReactiveDocumentOperations
の非推奨の find
メソッドは削除されました。
重大な変更
RefreshPolicy
Enum パッケージが変更されました
4.1 では、カスタム構成クラスのメソッド AbstractReactiveElasticsearchConfiguration.refreshPolicy()
をオーバーライドすることで、ReactiveElasticsearchTemplate
のリフレッシュポリシーを構成できました。このメソッドの戻り値は、クラス org.elasticsearch.action.support.WriteRequest.RefreshPolicy
のインスタンスでした。
ここで、構成は org.springframework.data.elasticsearch.core.RefreshPolicy
を返す必要があります。この列挙型は同じ値を持ち、以前と同じ動作をトリガーするため、import
ステートメントのみを調整する必要があります。
リフレッシュ動作
ElasticsearchOperations
および ReactiveElasticsearchOperations
は、null でない場合、書き込みリクエストのテンプレートに設定された RefreshPolicy
を明示的に使用するようになりました。リフレッシュポリシーが null の場合、特別なことは何も行われないため、クラスターのデフォルトが使用されます。ElasticsearchOperations
は、このバージョンより前は常にクラスターのデフォルトを使用していました。
ElasticsearchRepository
および ReactiveElasticsearchRepository
に対して提供されている実装は、リフレッシュポリシーが null の場合に明示的なリフレッシュを実行します。これは以前のバージョンと同じ動作です。リフレッシュポリシーが設定されている場合、リポジトリでも使用されます。
構成のリフレッシュ
ElasticsearchConfigurationSupport
、AbstractElasticsearchConfiguration
、AbstractReactiveElasticsearchConfiguration
を使用して Elasticsearch クライアントに従って Spring Data、Elasticsearch を構成すると、リフレッシュポリシーは null
に初期化されます。以前は、リアクティブコードによってこれが IMMEDIATE
に初期化されていましたが、現在はリアクティブコードと非リアクティブコードが同じ動作を示します。
メソッド戻り値の型
クエリを受け取るメソッドを削除する
以前は、リアクティブメソッドは削除されたドキュメントの数を含む Mono<Long>
を返していましたが、非リアクティブバージョンは無効でした。削除されたドキュメントと発生した可能性のあるエラーに関するより詳細な情報を含む Mono<ByQueryResponse>
が返されるようになりました。
マルチゲットメソッド
以前の multiget の実装は、非リアクティブ実装の場合は List<T>
で、リアクティブ実装の場合は Flux<T>
で見つかったエンティティのみを返しました。リクエストに見つからない ID が含まれていた場合、それらが欠落しているという情報は入手できませんでした。ユーザーは、返された ID とリクエストされた ID を比較して、欠落している ID を見つける必要がありました。
multiget
メソッドは、リクエストされたすべての ID に対して MultiGetItem
を返すようになりました。これには、障害に関する情報 (存在しないインデックスなど) と、項目が存在するかどうか (つまり、` MultiGetItem に含まれる) かどうかの情報が含まれます。