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

Java 无法连接到Elasticsearch 6.1.0[配置的节点均不可用]

Java 无法连接到Elasticsearch 6.1.0[配置的节点均不可用],java,elasticsearch,Java,elasticsearch,我能够通过cURL和plugin head连接到弹性搜索6.1.0,并对文档进行索引、更新、删除和查询,但我无法通过java客户端连接到弹性搜索6.1.0,即 /** * Elasticsearch */ // https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch compile group: 'org.elasticsearch', name: 'elasticsearc

我能够通过cURL和plugin head连接到弹性搜索
6.1.0
,并对文档进行索引、更新、删除和查询,但我无法通过java客户端连接到弹性搜索
6.1.0
,即

    /**
     * Elasticsearch
     */
    // https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch
    compile group: 'org.elasticsearch', name: 'elasticsearch', version: '6.1.0'
    // https://mvnrepository.com/artifact/org.elasticsearch.client/transport
    compile group: 'org.elasticsearch.client', name: 'transport', version: '6.1.0'
依赖关系。 下面是elasticsearch.yml

#cluster.name: my-application
cluster.name: saasworthy-qa

node.name: qa-1

path.data: /var/lib/elasticsearch

path.logs: /var/log/elasticsearch

#network.host: 192.168.0.1
network.host: 10.10.10.2

#http.port: 9200

#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
#discovery.zen.ping.unicast.hosts: ["10.10.10.2"]
#discovery.zen.minimum_master_nodes: 1
通过java客户端接收到的错误为:

ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...
Exception in thread "main" NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{SLvQfw9FREWVhpwTBtjNWg}{X.X.X.X}{X.X.X.X:9300}]]
    at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:347)
    at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:245)
    at org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:60)
    at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:360)
    at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:405)
    at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:394)
    at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:46)
    at com.sw.config.elastic.connection.factory.SaaSWorthyElasticsearchClientFactory.main
另外,
netstat
info

netstat -antp | grep 9300
tcp6       0      0 10.10.10.2:9300         :::*                    LISTEN      19768/java 

请帮我解决这个问题。谢谢。

For Java Elasticsearch提供了两套客户端API:

  • 用于Java传输客户端的elasticsearch.yml(单节点):

    Java传输客户端示例:

        // on startup
    
        TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
                .addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300));
    
        System.out.println(client.listedNodes());
    
        // on shutdown
    
        client.close();
    
    要使用Java传输客户端,我们需要做,这对于初学者来说非常困难。使用Java REST客户端更容易

    注意:Elasticsearch计划在Elasticsearch 7.0中弃用TransportClient,并在8.0中完全移除它。更多信息 可以找到(只需向下滚动搜索 警告(符号)


    client.transport.sniff
    标记为
    false
    后,我可以通过传输客户端进行连接。作为dev环境的服务器,集群只包含一个节点

    更多

        // on startup
    
        TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
                .addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300));
    
        System.out.println(client.listedNodes());
    
        // on shutdown
    
        client.close();