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 Java API简要总汇

Elasticsearch---spring-boot-starter-data-elasticsearch整合攻略详解

SpringBoot集成ElasticSearch 02使用 spring-boot-starter-data-elasticsearch 集成并使用高级客户端

spring整合Elasticsearch

宏已被禁用啥意思?

elasticsearch