4.4.x から 5.0.x へのアップグレード
このセクションでは、バージョン 4.4.x から 5.0.x への重大な変更と、削除された機能を新しく導入された機能で置き換える方法について説明します。
非推奨
カスタムトレースレベルのロギング
プロパティ logging.level.org.springframework.data.elasticsearch.client.WIRE=trace
を設定してログを記録することは現在非推奨です。Elasticsearch RestClient
は、tracer
パッケージのログ記録レベルを「トレース」に設定することで有効にできる、より優れたソリューションを提供します。
org.springframework.data.elasticsearch.client.erhlc
パッケージ
パッケージの変更を参照してください。このパッケージ内のすべてのクラスは非推奨になりました。使用するデフォルトのクライアント実装は、Elasticsearch の新しい Java クライアントに基づくものなので、新しい Elasticsearch クライアントを参照してください。
重大な変更
パッケージの変更
非推奨の Elasticsearch RestHighLevelClient
を使用しているかそれに依存しているすべてのクラスは、パッケージ org.springframework.data.elasticsearch.client.erhlc
に移動されました。この変更により、古い非推奨の Elasticsearch ライブラリを使用するコード、新しい Elasticsearch クライアントを使用するコード、およびクライアント実装に依存しないコードが明確に分離されました。また、これまで提供されていたリアクティブ実装は、この実装に Elasticsearch ライブラリからコピーおよび適応されたコードが含まれているため、ここに移動されました。
ElasticsearchOperations
インターフェースではなく ElasticsearchRestTemplate
を直接使用している場合は、インポートも調整する必要があります。
NativeSearchQuery
クラスを使用する場合は、新しい Elasticsearch クライアントライブラリから Query
インスタンスを取得できる NativeQuery
クラスに切り替える必要があります。テストコードには多くの例があります。
Java 17 レコードへの変換
次のクラスは Record
に変換されているため、getter メソッドの使用を getProp()
から prop()
に調整する必要がある場合があります。
org.springframework.data.elasticsearch.core.AbstractReactiveElasticsearchTemplate.IndexResponseMetaData
org.springframework.data.elasticsearch.core.ActiveShardCount
org.springframework.data.elasticsearch.support.Version
org.springframework.data.elasticsearch.support.ScoreDoc
org.springframework.data.elasticsearch.core.query.ScriptData
org.springframework.data.elasticsearch.core.query.SeqNoPrimaryTerm
新 HttpHeaders クラス
バージョン 4.4 までは、クライアント構成では org.springframework:spring-web
プロジェクトの HttpHeaders
クラスが使用されていました。これにより、そのアーティファクトへの依存関係が生じます。spring-web を使用しないユーザーは、このクラスが見つからないため、エラーが発生します。
バージョン 5.0 では、クライアントを構成するために独自の HttpHeaders
が導入されています。
クライアント構成でヘッダーを使用している場合は、org.springframework.http.HttpHeaders
を org.springframework.data.elasticsearch.support.HttpHeaders
に置き換える必要があります。
ヒント: org.springframework.http .HttpHeaders
を org.springframework.data.elasticsearch.support.HttpHeaders
の addAll()
メソッドに渡すことができます。
新しい Elasticsearch クライアント
Spring Data Elasticsearch では新しい ElasticsearchClient
が使用されるようになり、以前の RestHighLevelClient
の使用は非推奨になりました。
命令型のスタイル設定
新しいクライアントを使用するように Spring Data Elasticsearch を構成するには、org.springframework.data.elasticsearch.client.elc.ElasticsearchConfiguration
から派生した構成 Bean を作成する必要があります。
@Configuration
public class NewRestClientConfig extends ElasticsearchConfiguration {
@Override
public ClientConfiguration clientConfiguration() {
return ClientConfiguration.builder() //
.connectedTo("localhost:9200") //
.build();
}
}
構成は古いクライアントの場合と同じ方法で行われますが、構成 Bean 以外を作成する必要はなくなりました。この構成では、Spring アプリケーションコンテキストで次の Bean を使用できるようになります。
RestClient
Bean、これは Elasticsearch クライアントによって使用される構成された低レベルのRestClient
です。ElasticsearchClient
Bean、これはRestClient
を使用する新しいクライアントですElasticsearchOperations
Bean、Bean の名称 elasticsearchOperations および elasticsearchTemplate で利用可能、これはElasticsearchClient
を使用する
リアクティブスタイルの設定
リアクティブ環境で新しいクライアントを使用する場合の唯一の違いは、構成の派生元のクラスです。
@Configuration
public class NewRestClientConfig extends ReactiveElasticsearchConfiguration {
@Override
public ClientConfiguration clientConfiguration() {
return ClientConfiguration.builder() //
.connectedTo("localhost:9200") //
.build();
}
}
この構成では、Spring アプリケーションコンテキストで次の Bean を使用できるようになります。
RestClient
Bean、これは Elasticsearch クライアントによって使用される構成された低レベルのRestClient
です。ReactiveElasticsearchClient
Bean、これはRestClient
を使用する新しいリアクティブクライアントです。ReactiveElasticsearchOperations
Bean、Bean の名称 reactiveElasticsearchOperations および reactiveElasticsearchTemplate で利用可能、これはReactiveElasticsearchClient
を使用する
まだ古いクライアントを使用したいですか ?
古くて非推奨の RestHighLevelClient
も引き続き使用できますが、Spring Data Elasticsearch は自動的にそれをプルしないため、アプリケーションに依存関係を明示的に追加する必要があります。
<!-- include the RHLC, specify version explicitly -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.17.5</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
必ずバージョン 7.17.6 を明示的に指定してください。そうしないと、maven は 8.5.0 に解決され、これは存在しません。