nodeBuilder() 已被 Elasticsearch 删除,但 spring-data-elasticsearch 文档仍然包含使用 nodeBuilder() 的配置
Posted
技术标签:
【中文标题】nodeBuilder() 已被 Elasticsearch 删除,但 spring-data-elasticsearch 文档仍然包含使用 nodeBuilder() 的配置【英文标题】:nodeBuilder() is removed by Elasticsearch, but still spring-data-elasticsearch documentation contains configuration which uses nodeBuilder() 【发布时间】:2019-09-13 10:58:31 【问题描述】:我关注的是Spring-Data-Elasticseach documentaion,并且关注的是上面链接中提到的配置。
@Configuration
@EnableElasticsearchRepositories(basePackages = "org/springframework/data/elasticsearch/repositories")
static class Config
@Bean
public ElasticsearchOperations elasticsearchTemplate()
return new ElasticsearchTemplate(nodeBuilder().local(true).node().client());
由于文档中没有提到 nodeBuilder()
的导入,我假设它来自 org.elasticsearch.node.NodeBuilder.*
,如 elasticsearch Java API 中所述。
但在后来的版本中,API 发生了变化,NodeBuilder
不再存在。那么为什么/如何Spring文档仍然使用NodeBuilder
?
如果这是文档的问题,那么正确的配置是什么?
我正在使用的依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
与引导版本2.1.1.RELEASE
【问题讨论】:
【参考方案1】:这看起来像是文档问题。我已经提出 DATAES-574 来解决这个问题。
在 Spring Boot 2.1 中,创建 Client
bean 的常用方法是设置 spring.data.elasticsearch.cluster-nodes
属性。这将在幕后创建Client
作为org.elasticsearch.client.transport.TransportClient
实例。
如果您愿意,您也可以自己定义该 bean。
将来,TransportClient
也将被 Elasticsearch 弃用。此时,您将需要使用更高级别的 REST API。详情请见https://jira.spring.io/browse/DATAES-407。
【讨论】:
谢谢菲尔。Java High Level REST Client
支持的票已在 2018 年 10 月关闭,但我没有看到任何有关此的文档。您还说过“在幕后,这会将客户端创建为 org.elasticsearch.client.transport.TransportClient 实例”......但是为什么呢?你知道什么原因吗?
我认为文档是由 Elastic (elastic.co/guide/en/elasticsearch/client/java-rest/master/…) 提供的。我不确定是否仍有待处理的 Spring Data 文档更新。可能值得为此提出一个问题。
org.elasticsearch.client.transport.TransportClient
的使用请看this code。这只是我们发布 Spring Boot 2.1 时推荐的 API以上是关于nodeBuilder() 已被 Elasticsearch 删除,但 spring-data-elasticsearch 文档仍然包含使用 nodeBuilder() 的配置的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch---spring-boot-starter-data-elasticsearch整合攻略详解
SpringBoot集成ElasticSearch 02使用 spring-boot-starter-data-elasticsearch 集成并使用高级客户端