一尘不染

NoNodeAvailableException:没有配置的节点可用

elasticsearch

我正在尝试从Java Web Service中的Elastic Search中进行搜索,这是我现在使用的方式:

    Client client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.10.150"), 9200));
    SearchResponse searchResponse = client.prepareSearch().execute().actionGet();

第一行可以正常工作,但是转到第二行时,将发生以下异常:

NoNodeAvailableException [没有已配置的节点可用:[{#transport#-1}
{TskPSVeBRR6CvCzP9EVhkQ} {192.168.10.150} {192.168.10.150:9200}]]

无论我使用 9200 还是 9300 设置 端口 ,结果都是一样的。

另外,我尝试使用 NEST*.Net 程序中搜索,并且运行正常。这是我尝试的方法: *

    var node = new Uri("http://192.168.10.150:9200");
    var settings = new ConnectionSettings(node).DefaultIndex("iod-2017.03.08.*");
    _EsClient = new ElasticClient(settings);
    var index = String.Format("iod-{0}.{1:00}.{2:00}.*", item.TriggerTime.Year, item.TriggerTime.Month, item.TriggerTime.Day);
    var uniqueId = item.UniqueId.ToString();
    var result = _EsClient.Search<logs>(s => s.Index(index).Query(q => q.Match(t => t.Field(l => l.id).Query(uniqueId))));

我的Java程序是否做错了什么( 防火墙 ,库的 版本 ,调用API的 方法 等)?我当前的 Java 版本是
1.8.0.121Elastic SearchTransport Client 的版本都是 5.2 。谢谢!


阅读 672

收藏
2020-06-22

共1个答案

一尘不染

如评论中所述,

如果您使用的不是elasticsearch集群名称,则需要在设置中更新该名称。

Settings settings = Settings.builder()
        .put("cluster.name", "myClusterName").build();
2020-06-22