【问题标题】:Elasticsearch not starting, but throwing ReceiveTimeoutTransportExceptionElasticsearch 未启动,但抛出 ReceiveTimeout TransportException
【发布时间】:2014-04-19 19:17:24
【问题描述】:

我正在尝试通过 java api 使用弹性搜索,但是当我尝试运行应用程序时,我遇到了以下异常。

   18:13:52.378 [elasticsearch[Fallen One][generic][T#1]] INFO  org.elasticsearch.client.transport - [Fallen One] failed to get local cluster state for [#transport#-1][integra][inet[/127.0.0.1:9300]], disconnecting...
org.elasticsearch.transport.ReceiveTimeoutTransportException: [][inet[/127.0.0.1:9300]][cluster/state] request_id [52] timed out after [5001ms]
    at org.elasticsearch.transport.TransportService$TimeoutHandler.run(TransportService.java:356) [elasticsearch-1.0.1.jar:na]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_51]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_51]
    at java.lang.Thread.run(Thread.java:744) [na:1.7.0_51]
18:13:52.381 [elasticsearch[Fallen One][generic][T#1]] DEBUG org.elasticsearch.transport.netty - [Fallen One] disconnected from [[#transport#-1][integra][inet[/127.0.0.1:9300]]]
18:13:52.391 [elasticsearch[Fallen One][generic][T#3]] DEBUG org.elasticsearch.transport.netty - [Fallen One] connected to node [[#transport#-1][integra][inet[/127.0.0.1:9300]]]

连接弹性搜索的代码是

private String[] esNodes =  { "127.0.0.1:9300" };
 protected TransportClient buildClient() throws Exception {
        Settings settings = ImmutableSettings.settingsBuilder()
                .put("client.transport.sniff", true)
                .put("client.transport.ignore_cluster_name",true).build();

        TransportClient client = new TransportClient(settings);
        for (int i = 0; i < esNodes.length; i++) {
            client.addTransportAddress(toAddress(esNodes[i]));
        }
        return client;
    }

    private InetSocketTransportAddress toAddress(String address) {
        if (address == null) return null;

        String[] splitted = address.split(":");
        int port = 9300;
        if (splitted.length > 1) {
            port = Integer.parseInt(splitted[1]);
        }
        return new InetSocketTransportAddress(splitted[0], port);
    }

谁能帮帮我,我是弹性搜索的新手,不知道如何解决这个问题。

【问题讨论】:

    标签: spring-mvc elasticsearch spring-data


    【解决方案1】:

    我正在使用此代码连接到我的 elasticsearch,它运行良好。

    Settings settings = ImmutableSettings.settingsBuilder()
                .put("cluster.name", clusterName).build();
    this.client = new TransportClient(settings)
                .addTransportAddress(new InetSocketTransportAddress(ipAddress,9300));
    

    其中 ipAddress 和 Clustername 是我的函数的参数。

    【讨论】:

      【解决方案2】:

      我认为弹性搜索服务器没有启动..尝试在浏览器或 curl cmets 中点击..如果它有效..试试上面的代码..

      注意:如果您的 JAVA API JAR 版本不同,也会引发问题。(获取与 ES 版本相同的 java api 版本

      注意:elasticsearch java api 可以帮助你连接到 elasticsearch.. 但是它不能使用 api 启动一个 elasticsearch 节点..

      你的代码很好..它也是 Vry 标准..

      【讨论】:

      • 投反对票的人,请说明原因!
      【解决方案3】:

      您应该查看笔记本电脑上的网络。检查您是否可以连接到本地主机。您可以尝试的另一件事是启动两个具有相同配置的弹性搜索实例,以查看它们是否连接。最后看一下 elasticsearch.yml 的网络部分。当本地机器出现网络问题时,我通常会尝试以下两个选项:

      network.host: 本地主机 discovery.zen.ping.multicast.enabled:假 discovery.zen.ping.unicast.hosts: ["localhost"]

      【讨论】:

        猜你喜欢
        • 2020-09-10
        • 2012-09-10
        • 1970-01-01
        • 2017-12-20
        • 2017-03-03
        • 1970-01-01
        • 2021-01-02
        • 1970-01-01
        • 2022-12-22
        相关资源
        最近更新 更多