java - 通过 TransportClient 在 java 中使用 Elasticsearch

标签 java elasticsearch

我正在尝试通过 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));

查找相关文档here .

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

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

关于java - 通过 TransportClient 在 java 中使用 Elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46173884/

相关文章:

elasticsearch - 当天时间弹性查询

node.js - AWS凭证错误:无法从任何提供程序加载凭证。 ElasticSearch服务node.js

elasticsearch - 在ElasticSearch中如何过滤某些单词的结果集?

java - jsoup 从 <a> 标签内的标签获取文本

elasticsearch - 使用 Elasticsearch Java API 检索特定字段

elasticsearch - 我可以在 has_child 脚本过滤器中访问父文档属性吗?

java - Jersey RESTful Web 服务 gradle 设置

java.util.Scanner 不工作

Java Swing : Make a dialog partially transparent.

java - 将括号转换为链接 Java