代码之家  ›  专栏  ›  技术社区  ›  Peter Penzov

为客户端安装兼容的弹性搜索版本

  •  0
  • Peter Penzov  · 技术社区  · 2 年前

    我使用这个旧版本的弹性搜索版本:

    implementation 'org.elasticsearch:elasticsearch:5.6.15'
    implementation 'org.elasticsearch.client:transport:5.6.15'
    implementation 'org.elasticsearch.plugin:transport-netty4-client:5.6.15'
    

    我尝试使用此代码连接到单节点群集版本 7.17.18 :

    Settings settings = Settings.builder().put("cluster.name", "my-application").build();
    TransportClient client = new PreBuiltTransportClient(settings);
    client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("elhost"), 9200));
    

    我在连接过程中总是出错:

    00:36:55.575 [Test worker] DEBUG org.elasticsearch.client.transport.TransportClientNodesService - failed to connect to node [{#transport#-1}{HMVGc-VRQKaQd94qprZcNQ}{elhost}{192.168.1.112:9200}], ignoring...
    org.elasticsearch.transport.ConnectTransportException: [][192.168.1.112:9200] handshake_timeout[30s]
    

    我怀疑这是因为版本不兼容。你知道哪个版本的弹性搜索服务器与这个客户端版本兼容吗?

    1 回复  |  直到 2 年前
        1
  •  1
  •   imotov    2 年前

    这里有两个问题。

    首先,版本在这里肯定是一个问题,尤其是传输客户端,它使用二进制序列化,并且对与之对话的弹性搜索版本非常敏感。理想情况下,您希望将传输客户端与相同版本的弹性搜索集群(在您的情况下为6.5.5)一起使用。有一些兼容性层允许5.x客户端与其他5.x节点进行通信,因此理论上其他5.x版本也应该可以工作。但为了获得最好的结果,我会使用5.6.5,因为它是5.x系列中的最新版本。也就是说,v5.6.15已经有5年的历史了,多年来一直没有得到支持,也没有收到任何安全更新。所以,我不建议使用它,尤其是当你正在启动一个新项目时。将现代版本的elasticsearch与现代版本的弹性搜索客户端结合使用会更加谨慎。

    第二个问题是连接到错误的端口。9200端口用于REST API(和REST客户端)。传输客户端需要连接到另一个端口9300。