当前位置: 首页 > 面试题库 >

ElasticSearch Java API:NoNodeAvailableException:无可用节点

颜修真
2023-03-14
问题内容
public static void main(String[] args) throws IOException {
    Settings settings = ImmutableSettings.settingsBuilder()
            .put("cluster.name", "foxzen")
            .put("node.name", "yu").build();
    Client client = new TransportClient(settings)
            .addTransportAddress(new InetSocketTransportAddress("XXX.XXX.XXX.XXX", 9200));
            // XXX is my server's ip address
    IndexResponse response = client.prepareIndex("twitter", "tweet")
            .setSource(XContentFactory.jsonBuilder()
                    .startObject()
                    .field("productId", "1")
                    .field("productName", "XXX").endObject()).execute().actionGet();
    System.out.println(response.getIndex());
    System.out.println(response.getType());
    System.out.println(response.getVersion());
    client.close();
}

我从计算机访问服务器

curl -get http://XXX.XXX.XXX.XXX:9200/

得到这个

{
    "status" : 200,
    "name" : "yu",
    "version" : {
        "number" : "1.1.0",
        "build_hash" : "2181e113dea80b4a9e31e58e9686658a2d46e363",
        "build_timestamp" : "2014-03-25T15:59:51Z",
        "build_snapshot" : false,
        "lucene_version" : "4.7"
    },
    "tagline" : "You Know, for Search"
}

为什么使用Java API会出错?

编辑

有集群和节点部分的配置 elasticsearch.yml

################################### Cluster ###################################

# Cluster name identifies your cluster for auto-discovery. If you're running
# multiple clusters on the same network, make sure you're using unique names.
#
cluster.name: foxzen


#################################### Node #####################################

# Node names are generated dynamically on startup, so you're relieved
# from configuring them manually. You can tie this node to a specific name:
#
node.name: yu

问题答案:

一些建议:

1-使用端口9300。[9300-9400]用于节点到节点通信,[9200-9300]用于HTTP通信。

2-确保您使用的Java API的版本与服务器上运行的elasticsearch的版本匹配。

3-确保集群名称为foxzen(检查服务器上的elasticsearch.yml)。

4-删除put("node.name", "yu"),因为您正在使用TransportClientyu所以您不会作为节点加入群集,即使您看起来像是服务器节点也已命名,因此无论如何都希望使用其他节点名称。



 类似资料:
  • 首先,我为我的英语感到抱歉。我有一个问题与Java API传输客户端。我有一个主节点和三个数据节点。我的Elasticsearch版本是5.0.2,我使用5.0.2 API。 我尝试用传输客户端连接到群集,然后响应 这是我的客户端代码: 传输客户端的端口-9300,我的所有节点都在此端口下通信。我看到了很多和我一样的问题,我试图遵循其中包含的建议。但我也有同样的例外。 如果需要更多的信息或任何文件

  • 我对弹性搜索概念非常陌生。我试图建立一个简单的应用程序使用弹性搜索。 我的类看起来像, 谢谢你。

  • 我正在编写一个Qt GUI应用程序,它通过串行方式接收数据并将数据发送到Arduino。它写得正确,但当尝试阅读时,它不起作用。 我的问题是: 我有一个Arduino代码可以通过串行方式发送信息,我将其编程为根据接收到的数据打开和关闭针脚13上的LED: 我在MainWindow类中使用以下信号和插槽: 以及前一个插槽调用的Arduino::Read()方法: 当向Arduino写入数据时,它工作

  • 作者:mendickxiao 经过部署Kubernetes集群章节我们已经可以顺利的部署一个集群用于开发和测试,但是要应用到生产就就不得不考虑master节点的高可用问题,因为现在我们的master节点上的几个服务kube-apiserver、kube-scheduler和kube-controller-manager都是单点的而且都位于同一个节点上,一旦master节点宕机,虽然不应答当前正在运

  • 我在Zookeeper和Kafka(各1个实例)中运行我的locahost。 我成功地从Kafka创建了一个主题: Kafka日志显示: 但Zookeeper的日志显示: 如果我尝试生成消息: server.properties(在Kafka中)是: 看来动物园管理员没有注册任何经纪人。 有什么建议吗?

  • 获取错误:“org.apache.kafka.clients.NetworkClient:[Consumer ClientID=Consumer-1,GroupID=Inter]无法建立到节点-1的连接。代理可能不可用。” 我尝试将Java版本切换到11和8以及各种属性 2019-08-22 16:25:20.580警告5865---[restartedMain]org.apache.kafka.