gpt4 book ai didi

java - 使用 Elasticsearch JAVA API 将 network.publish_host 设置为客户端节点

转载 作者:行者123 更新时间:2023-12-01 13:20:32 26 4
gpt4 key购买 nike

我正在我的虚拟机上运行 Elasticsearch 节点。我在主机上编写了一个模拟器,尝试连接到我的 VM ES 节点。

客户端代码连接如下:

    Node node = nodeBuilder().clusterName("AnalyticsCluster")
.client(true).node();
mClient = node.client();

我确保在 VM 节点上配置了正确的集群名称。我不想使用其他方法(使用 TransportClient)连接到 ES 节点,因为根据 ES 文档,这将导致每次搜索经过 2 跳。

失败如下:

org.elasticsearch.discovery.MasterNotDiscoveredException: waited for [1m]
at org.elasticsearch.action.support.master.TransportMasterNodeOperationAction$3.onTimeout(TransportMasterNodeOperationAction.java:180)
at org.elasticsearch.cluster.service.InternalClusterService$NotifyTimeout.run(InternalClusterService.java:491)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)

我想我理解根本原因(尽管不是 100%)是客户端和节点使用不同的网络来发布多播。我这么说是基于以下几点:

ES节点控制台

[2014-02-26 18:19:13,725][INFO ][transport                ] [Baron Samedi] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/192.168.79.128:9300]}

客户端节点控制台

INFO: [Lacuna] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/192.168.1.105:9200]}

换句话说,节点在 192.168.79.* 网络(即 VM 网络)上发布,客户端在 192.168.1.* 网络(即我的 wifi 网络)上发布。

看来我可以通过在客户端设置 network.publish_host 来解决这个问题。问题是在客户端上我没有 elasticsearch.yml 。我也没有找到以编程方式设置它的方法。

我有两个问题(按优先顺序排列):

  1. network.publish_host 可以通过编程方式设置吗?如何设置?

  2. 如何在客户端设置 API 将用于其设置的 elasticsearch.yml?

提前致谢

P.S:虚拟机上的防火墙已停止。

最佳答案

我通过做两件事解决了这个问题。

A)我在客户端添加了 src/main/resources/elasticsearch.yml,如下所示:

 network.host: 10.231.150.165

这并没有完全解决问题。客户端在位于虚拟机上的服务器端正确发送多播。但虚拟机无法连接回客户端

B) 我将主机和虚拟机之间的网络配置为桥接网络,而不是像 VMWare 上默认的 NAT 网络。设置如下:

enter image description here

这完全解决了问题,因为现在我的主机和虚拟机位于同一个 LAN 上。

关于java - 使用 Elasticsearch JAVA API 将 network.publish_host 设置为客户端节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22052531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com