首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何连接到已启动并使用elasticsearch java客户端启动的远程elasticsearch服务器

如何连接到已启动并使用elasticsearch java客户端启动的远程elasticsearch服务器
EN

Stack Overflow用户
提问于 2016-04-13 15:13:38
回答 2查看 3.4K关注 0票数 2

我正在使用这个代码来连接我的本地弹性服务器

代码语言:javascript
复制
        String url = "localhost:9200";
        String encodedUrl = URLEncoder.encode(url, "UTF-8");
        Node node = nodeBuilder().settings(
                Settings.settingsBuilder()
                        .put("http.enabled", false)
                        .put("path.home", encodedUrl)
        )
                .client(true)
                .data(false)
                .node();
        return node.client();

我正在使用此代码连接远程弹性服务器

代码语言:javascript
复制
       // Transport client way


        Settings settings = Settings.settingsBuilder()
                .put("cluster.name", "Test") // remote elastic cluster name which is different in my case
                .build();
        Client client = TransportClient.builder().settings(settings).build()
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("**.**.***.**"), 9259)); // my remote elastic server IP and its port 
        return client;


       // And my other way of connecting (Node Client way)is


       String url = "**.**.***.**:9259";

        String encodedUrl = URLEncoder.encode(url, "UTF-8");
        Node node = nodeBuilder().settings(
                Settings.settingsBuilder()
                        .put("http.enabled", false)
                        .put("path.home", encodedUrl)
                        .put("discovery.zen.ping.unicast.hosts", "52.74.***.**")
                        .put("cluster.name", "Test")
        )
                .client(true)
                .data(false)
                .node();
        return node.client();

我可以连接我的本地弹性服务器,但我无法连接到远程弹性服务器,总是会出现一些错误

NodeNotConnectedException:

SendRequestTransportException

ReceiveTimeoutTransportException

NodeNotAvailableException:

等等。

有没有人能帮我弄清楚如何使用java连接到远程弹性服务器,因为我正在dropwizard框架中开发web应用程序,并且需要从这些弹性api服务器获取数据。

在与远程ES服务器建立客户端连接时,会发生这种情况

代码语言:javascript
复制
INFO  [2016-04-13 11:23:45,826] org.elasticsearch.node: [Thunderbolt] version[2.2.0], pid[4720], build[8ff36d1/2016-01-27T13:32:39Z]
INFO  [2016-04-13 11:23:45,826] org.elasticsearch.node: [Thunderbolt] initializing ...
INFO  [2016-04-13 11:23:45,826] org.elasticsearch.plugins: [Thunderbolt] modules [], plugins [], sites []
INFO  [2016-04-13 11:23:46,039] org.elasticsearch.node: [Thunderbolt] initialized
INFO  [2016-04-13 11:23:46,039] org.elasticsearch.node: [Thunderbolt] starting ...
INFO  [2016-04-13 11:23:46,732] org.elasticsearch.transport: [Thunderbolt] publish_address {127.0.0.1:9302}, bound_addresses {127.0.0.1:9302}, {[::1]:9302}
INFO  [2016-04-13 11:23:46,732] org.elasticsearch.discovery: [Thunderbolt] Test/eZo2PDQuTcWdd3zsLzVm-w
WARN  [2016-04-13 11:24:16,748] org.elasticsearch.discovery: [Thunderbolt] waited for 30s and no initial state was set by the discovery
INFO  [2016-04-13 11:24:16,748] org.elasticsearch.node: [Thunderbolt] started
EN

回答 2

Stack Overflow用户

发布于 2016-04-13 15:30:37

从ES 2.x开始,ES服务器将执行only bind to localhost by default操作,这意味着无法从外部访问它。

因此,在您的远程ES服务器上,请确保您的elasticsearch.yml配置文件包含以下具有可公开访问的IP地址的network.host设置:

代码语言:javascript
复制
network.host: a.b.c.d

其中a.b.c.d是远程服务器的IP地址。

请确保在进行更改后重新启动ES。

票数 2
EN

Stack Overflow用户

发布于 2016-04-15 01:05:49

我想出的答案是

代码语言:javascript
复制
Settings settings = Settings.settingsBuilder()
            .put("cluster.name", "Test") 
            .build();
Client client = TransportClient.builder().settings(settings).build()
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("**.**.***.**"), 9300)); // my remote elastic server IP and its port 
return client;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36591116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档