使用 elasticsearchoperations 与 elasticsearchtemplate 有什么区别?

using elasticsearchoperations vs elasticsearchtemplate whats the difference?

我想弄清楚为什么必须将我的 bean 名称设置为 elasticsearchTemplate。没有它,我的应用程序就会崩溃。我有下面的代码来配置我的 Rest 客户端。问题是如果我不添加 elasticsearchTemplate 作为 bean 名称,它会失败并说找不到 elasticsearchTemplate。关于为什么这样做的任何想法以及使用 elasticsearchoperationselasticsearchtemplate 有什么区别?

Using Spring-Data-Elasticsearch Version 3.2
Using Java High-Level Rest Client Version 6.8.0

有效

@Bean("elasticsearchtemplate")
public ElasticsearchOperations elasticsearchTemplate() throws Exception {
    return new ElasticsearchTemplate(client());
}

不起作用

public ElasticsearchOperations elasticsearchTemplate() throws Exception {
    return new ElasticsearchTemplate(client());
}

可能是因为启动配置(application.properties)缺少elasticsearch相关的配置。 您需要在 application.properties 文件中定义一些弹性搜索属性,例如 ElasticsearchTemplate 使用的 cluster-nodescluster-names和 ElasticsearchRepository 连接到 Elasticsearch 引擎。 作为 follows

  1. 您可以通过扩展 AbstractElasticsearchConfiguration 手动配置 rest 客户端。
@Configuration
public class RestClientConfig extends AbstractElasticsearchConfiguration {
  @Override
  public RestHighLevelClient elasticsearchClient() {       
    return RestClients.create(ClientConfiguration.localhost()).rest();
  }
}
  1. 使用 elasticsearchoperations 和 elasticsearchtemplate 有什么区别?

The ElasticsearchTemplate is an implementation of the ElasticsearchOperations interface using the Transport Client.
https://docs.spring.io/spring-data/elasticsearch/docs/3.2.0.RELEASE/reference/html/#elasticsearch.operations.resttemplate