NodeBuilder 也可以用来连接集群。
Node node = nodeBuilder().clusterName("yourcluster").client(true).node();
Client client = node.client();
它将作为另一个节点加入集群,并将了解整个拓扑。使用节点,您可以使用多播来发现其他正在运行的节点。
我的观点是我更喜欢使用TransportClient
而不是NodeClient
因为当 TransportClient 停止时其他集群节点不会收到无用的信息。当 NodeClient 停止时,每个节点都必须知道这一点,即使他们不必管理它,因为它不保存任何数据。此外,我在调试模式下看到 NodeClientThreads
比 TransportCLient 启动更多。所以我认为 TransportClient 的内存占用更少。
顺便说一句,如果您使用的是 Spring,则可以使用spring-elasticsearch工厂。如果没有,您可以随时查看源代码以了解我如何管理 NodeClient 与 TransportClient。
希望这可以帮助。
编辑 2016-03-09:NodeClient
不应使用。如果需要,人们应该创建一个客户端节点(使用node.data: false
and启动一个 elasticsearch 节点node.master: false
)并使用 aTransportClient
在本地连接到它。