【问题标题】:nodeBuilder() is removed by Elasticsearch, but still spring-data-elasticsearch documentation contains configuration which uses nodeBuilder()nodeBuilder() 已被 Elasticsearch 删除,但 spring-data-elasticsearch 文档仍然包含使用 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

【问题讨论】:

    标签: spring-boot elasticsearch spring-data


    【解决方案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
    猜你喜欢
    • 2013-03-02
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多