elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

通过TransportClient在java中使用Elasticsearch

通过TransportClient在java中使用Elasticsearch,java,elasticsearch,Java,elasticsearch,我试图通过TransportClient在java中使用elasticsearch。我使用logstash将mysql与elasticsearch集成。 这就是我初始化和使用传输客户端的方式 TransportClient client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost")

我试图通过TransportClient在java中使用elasticsearch。我使用logstash将mysql与elasticsearch集成。 这就是我初始化和使用传输客户端的方式

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"),9200));
我无法连接到节点,并且我得到了握手超时。 我得到以下错误:

TransportClientNodesService - failed to connect to node 
[{#transport#-1}{vrvVU4MGTAC7_5NCOiBseg}{localhost}{127.0.0.1:9200}], 
ignoring...
org.elasticsearch.transport.ConnectTransportException: [][127.0.0.1:9200] handshake_timeout[30s]
at org.elasticsearch.transport.TcpTransport.executeHandshake(TcpTransport.java:1614) ~[elasticsearch-5.5.2.jar:5.5.2]
at org.elasticsearch.transport.TcpTransport.openConnection(TcpTransport.java:555) ~[elasticsearch-5.5.2.jar:5.5.2]
at org.elasticsearch.transport.TcpTransport.openConnection(TcpTransport.java:116) ~[elasticsearch-5.5.2.jar:5.5.2]
at org.elasticsearch.transport.TransportService.openConnection(TransportService.java:351) ~[elasticsearch-5.5.2.jar:5.5.2]
at org.elasticsearch.client.transport.TransportClientNodesService$SimpleNodeSampler.doSample(TransportClientNodesService.java:407) [elasticsearch-5.5.2.jar:5.5.2]
at org.elasticsearch.client.transport.TransportClientNodesService$NodeSampler.sample(TransportClientNodesService.java:357) [elasticsearch-5.5.2.jar:5.5.2]
at org.elasticsearch.client.transport.TransportClientNodesService$ScheduledNodeSampler.run(TransportClientNodesService.java:390) [elasticsearch-5.5.2.jar:5.5.2]
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:569) [elasticsearch-5.5.2.jar:5.5.2]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]

Elasticsearch传输端口为
9300
,因此请更改客户端创建行,将9200替换为
9300
,如下所示:

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"),9300));
Settings settings = Settings.builder()
        .put("cluster.name", "myClusterName").build();
TransportClient client = new PreBuiltTransportClient(settings);
//Add transport addresses and do something with the client...
查找相关文档

如果您使用的是不同的
cluster.name
,而不是默认值(
elasticsearch
),则必须在创建TransportClient时进行设置,如下所示:

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"),9300));
Settings settings = Settings.builder()
        .put("cluster.name", "myClusterName").build();
TransportClient client = new PreBuiltTransportClient(settings);
//Add transport addresses and do something with the client...

我应该在logstash.conf文件和其他地方将端口更改为9300还是仅在此处?仅在上面一行中。将错误获取为“不属于群集[elasticsearch],忽略…”是否已配置不同的
群集。名称
然后必须向传输客户端提供群集名称。你可以在这里找到设置集群名称的代码[是的,我已经解决了这个问题。非常感谢。我在这里找到了解决方案。