【问题标题】:Spring Data ElasticSearch TransportClient Java ConfigSpring Data ElasticSearch TransportClient Java 配置
【发布时间】:2014-11-21 02:53:27
【问题描述】:

有谁知道 Java Config 相当于什么:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/data/elasticsearch
http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd">
    <elasticsearch:transport-client id="client" cluster-nodes="localhost:9300,someip:9300"
/>
</beans>

我特别想用nodeBuilder()来做。

【问题讨论】:

    标签: java spring elasticsearch spring-data-elasticsearch


    【解决方案1】:

    查看 ElasticSearch 的 Spring Data 文档:

       @Configuration
       @EnableElasticsearchRepositories(basePackages = "org/springframework/data/elasticsearch/repositories")
            static class Config {
    
            @Value("${esearch.port}") int port;
            @Value("${esearch.host}") String hostname;
    
            @Bean
            public ElasticsearchOperations elasticsearchTemplate() {
            return new ElasticsearchTemplate(client());
             }
    
            @Bean
            public Client client(){
                TransportClient client= new TransportClient();
                TransportAddress address = new InetSocketTransportAddress(hostname, port); 
                client.addTransportAddress(address);
                return client;
            }
       }
    

    Elasticsearch Repositories 2.1.2 基于注解的配置

    Spring Data Elasticsearch 存储库支持不仅 通过 XML 命名空间激活,但也使用注释 通过 JavaConfig。

    【讨论】:

    • 上面的代码没有创建传输客户端,而是创建了一个节点客户端,并且是 Java Config 等效于以下 xml 配置
    • 请参阅使用 TransportClient 更新,您可以使用该构造函数调用 ElasticsearchTemplate
    • 您也可以将 Settings settings = ImmutableSettings.settingsBuilder().put("","").build() 传递给 TransportClient 的构造函数进行配置...
    • 谢谢贾玛。这样可行。有没有办法使用nodeBuilder() 创建传输客户端?
    • 它们是两个不同的东西。 NodeBuilder 为 ElasticSearch 的嵌入式版本创建一个客户端。 TransportClient 是一个用于外部运行 ES 集群的客户端。
    猜你喜欢
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    相关资源
    最近更新 更多