最新の安定バージョンについては、Spring Data Elasticsearch 5.5.5 を使用してください! |
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 に含まれる) かどうかの情報が含まれます。