4.2.x から 4.3.x へのアップグレード

このセクションでは、バージョン 4.2.x から 4.3.x への重大な変更と、削除された機能を新しく導入された機能で置き換える方法について説明します。

Elasticsearch は、RestHighLevelClient が Apache 2 ライセンスではない Elasticsearch コアライブラリのコードを使用しているため、RestHighLevelClient に代わる新しいクライアントに取り組んでいます。Spring Data と Elasticsearch もこの変更に備えています。つまり、内部的に *Operations インターフェースの実装を変更する必要があるということです。ユーザーが ElasticsearchOperations や ReactiveElasticsearchOperations などのインターフェースに対してプログラムを作成する場合は問題ありません。ElasticsearchRestTemplate などの実装クラスを直接使用している場合は、これらの変更に適応する必要があります。

Spring Data Elasticsearch は、API クラスとメソッドで org.elasticsearch パッケージのクラスの使用を削除または置き換え、Elasticsearch へのアクセスが実装されている実装でのみ使用します。ユーザーにとって、これは、使用されていた一部の列挙型クラスが、同じ値を持つ org.springframework.data.elasticsearch に存在する列挙型に置き換えられ、内部的に Elasticsearch の列挙型にマップされることを意味します。

簡単に置き換えることができないクラスが使用されている場所では、この使用箇所は非推奨としてマークされており、置き換えに取り組んでいます。

詳細については、非推奨および重大な変更のセクションを確認してください。

非推奨

方法を提案する

SearchOperations および ElasticsearchOperations では、引数として org.elasticsearch.search.suggest.SuggestBuilder を受け取り、org.elasticsearch.action.search.SearchResponse を返す suggest メソッドは非推奨になりました。代わりに SearchHits<T> search(Query query, Class<T> clazz) を使用し、SuggestBuilder を含めることができる NativeSearchQuery を渡し、返された 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 に変更されていますが、使用可能な enum 値は同じです。

  • org.springframework.data.elasticsearch.annotations.Document アノテーションでは、versionType() プロパティが org.springframework.data.elasticsearch.annotations.Document.VersionType に変更されており、使用可能な enum 値は同じです。

  • org.springframework.data.elasticsearch.core.query.Query インターフェースでは、searchType() プロパティが org.springframework.data.elasticsearch.core.query.Query.SearchType に変更され、利用可能な enum 値は同じです。

  • org.springframework.data.elasticsearch.core.query.Query インターフェースでは、timeout() の戻り値が java.time.Duration に変更されました。

  • もはや SearchHits<T>`class does not contain the `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 をスローするようになります。

クエリのフィールドと sourceFilter プロパティの処理

バージョン 4.2 までは、Query の fields プロパティが解釈され、sourceFilter のインクルードリストに追加されていました。これは正しくありませんでした。Elasticsearch ではこれらは異なるものです。これは修正されました。結果として、ドキュメントの _source' and should be changed to use the `sourceFilter からどのフィールドを返すかを指定するために fields を使用することに依存するコードは動作しなくなる可能性があります。

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 now uses org.springframework.data.elasticsearch.core.query.IndicesOptions instead of org.elasticsearch.action.support.IndicesOptions.

修了クラス

パッケージ 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 に名前変更されました。