0

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

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());
}
4

2 回答 2

1

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

于 2020-06-16T05:09:01.847 回答
0
  1. 您可以通过扩展 AbstractElasticsearchConfiguration 手动配置 rest 客户端。
@Configuration
public class RestClientConfig extends AbstractElasticsearchConfiguration {
  @Override
  public RestHighLevelClient elasticsearchClient() {       
    return RestClients.create(ClientConfiguration.localhost()).rest();
  }
}
  1. 使用 elasticsearchoperations 与 elasticsearchtemplate 有什么区别?

ElasticsearchTemplate 是使用传输客户端的 ElasticsearchOperations 接口的实现。
https://docs.spring.io/spring-data/elasticsearch/docs/3.2.0.RELEASE/reference/html/#elasticsearch.operations.resttemplate

于 2020-06-23T03:44:02.817 回答