私は、SpringブートとAWS elasticsearchサービスを使用しています。 RESTインターフェイスのみを提供するAWS Elasticsearchサービス。
Elasticsearch Rest Clientは こちら です。
単純に、RESTクライアントをSpring Data Elasticsearchで使用できますか?
つまり、Spring Data ElasticsearchはElasticsearch Restクライアントと連携しますか?
Spring Data Elasticsearchは非常に使いやすく、テンプレートは私が必要とするほとんどの機能を提供します。 Elasicsearch Restクライアントでは、すべての機能を自分で実装する必要があります。
[2019年2月更新]
3.2.0 M1 Spring Data ElasticsearchがHTTPクライアントをサポートしていることがわかりました( https://docs.spring.io/spring-data/elasticsearch/docs/3.2.0.M1/reference/html/#reference )
ドキュメントによると(最終バージョンではないため、当然変更される可能性があるため、ここに記載します)。
よく知られているTransportClientはElasticsearch 7.0.0で非推奨になり、Elasticsearch 8.0で削除される予定です。
2.1。高レベルRESTクライアント
Java High Level REST Clientは、まったく同じ要求/応答オブジェクトを受け入れて返すため、Elasticsearchに依存するため、TransportClientの単純な置き換えを提供します。コアプロジェクト:非同期呼び出しは、クライアント管理のスレッドプールで実行され、リクエストの完了時に通知されるコールバックが必要です。
例49.高レベルRESTクライアント
static class Config {
@Bean
RestHighLevelClient client() {
ClientConfiguration clientConfiguration = ClientConfiguration.builder()
.connectedTo("localhost:9200", "localhost:9201")
.build();
return RestClients.create(clientConfiguration).rest();
}
}
// ...
IndexRequest request = new IndexRequest("spring-data", "elasticsearch", randomID())
.source(singletonMap("feature", "high-level-rest-client"))
.setRefreshPolicy(IMMEDIATE);
IndexResponse response = client.index(request);
[元の回答]
現在、Spring Data ElasticsearchはREST APIによる通信をサポートしていません。これらはトランスポートクライアントを使用しています。
JESTライブラリが使用され、RESTによって通信が行われるSpring Data Elasticsearchの別の分岐があります(AWSでも同じことが必要でした)。
https://github.com/VanRoy/spring-data-jest
Spring Data Elasticsearchの次のチェックマークの下に興味深い議論があります。
https://jira.spring.io/browse/DATAES-22
ESのHTTP通信のみをサポートすることを計画しているElasticsearchチームの声明によると、Spring Data Elasticseachは将来的にRESTに移行する必要があると思います。
それが役に立てば幸い。
Elasticsearchのjestクライアントがあなたの目的に役立つと思います。 https://github.com/searchbox-io/Jest/tree/master/jest 。 JestはElasticSearchのJava HTTP Restクライアントです。非常に優れたドキュメントがあり、elasticsearchのすべてのクエリをサポートしています。
上記のPrzemek Nowakの答えにコメントすることはできません。 Spring Data ES 2.2.xがHigh Level Rest Clientを使用するのを待ちたくない場合、 Spring Data Jest は1日を節約します。
ドキュメントに従って、最初にデフォルトのSpring Data ES自動設定を無効にします。
@SpringBootApplication(exclude = {
ElasticsearchAutoConfiguration.class,
ElasticsearchDataAutoConfiguration.class
})
これで、リポジトリはJestの実装を使用するようになります。 ElasticsearchTemplate
を使用する場合は、代わりにElasticsearchOperations
インターフェイスを挿入するようにしてください。
private final ElasticsearchOperations esTemplate;