web-dev-qa-db-ja.com

Springdata Elasticsearchを備えたElasticsearch Restクライアント

私は、SpringブートとAWS elasticsearchサービスを使用しています。 RESTインターフェイスのみを提供するAWS Elasticsearchサービス。

Elasticsearch Rest Clientは こちら です。

単純に、RESTクライアントをSpring Data Elasticsearchで使用できますか?

つまり、Spring Data ElasticsearchはElasticsearch Restクライアントと連携しますか?

Spring Data Elasticsearchは非常に使いやすく、テンプレートは私が必要とするほとんどの機能を提供します。 Elasicsearch Restクライアントでは、すべての機能を自分で実装する必要があります。

14
abcdef12

[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に移行する必要があると思います。

それが役に立てば幸い。

23
Przemek Nowak

Elasticsearchのjestクライアントがあなたの目的に役立つと思います。 https://github.com/searchbox-io/Jest/tree/master/jest 。 JestはElasticSearchのJava HTTP Restクライアントです。非常に優れたドキュメントがあり、elasticsearchのすべてのクエリをサポートしています。

1
beSimple

上記の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;
0
Atanas Rusenov