elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

Java elasticsearch中关闭和关闭节点之间的区别?

Java elasticsearch中关闭和关闭节点之间的区别?,java,elasticsearch,Java,elasticsearch,具有具有单个节点的群集: Node node = NodeBuilder.nodeBuilder().loadConfigSettings(true).node(); 这两者有什么区别 node.close(); 及 ? 建议使用什么方法从java优雅地关闭节点/集群 如果设计在未连接的数据报套接字上使用shutdown(),则 只会使套接字无法用于进一步的send()和recv() 调用(请记住,如果连接()数据报,则可以使用这些 插座。) 需要注意的是,shutdown()实际上并没有关

具有具有单个节点的群集:

Node node = NodeBuilder.nodeBuilder().loadConfigSettings(true).node();
这两者有什么区别

node.close();

?

建议使用什么方法从java优雅地关闭节点/集群

如果设计在未连接的数据报套接字上使用shutdown(),则 只会使套接字无法用于进一步的send()和recv() 调用(请记住,如果连接()数据报,则可以使用这些 插座。)

需要注意的是,shutdown()实际上并没有关闭文件 它只是改变了它的可用性。要释放套接字描述符, 您需要使用close()

然而,就Elasticserach而言,API并未特别提及任何差异(仅a和a)。这些是共同定义的差异。最好联系他们的开发人员(在网站底部有一个选项),以获得关于其库实现的更详细说明


我建议使用
节点
访问集群,然后循环集群并单独关闭所有节点。但是,这取决于您真正想要什么。

上述两种操作的效果相同。区别可能在于它们影响的节点

使用
node.close()
可以关闭从应用程序启动的自己的节点,如果将elasticsearch群集嵌入应用程序中,该节点可能是唯一的节点,或者只是通过java api(传输端口)连接到外部群集的客户端节点

使用可以在一次操作中有效地关闭远程节点、可能的多个节点和整个集群。因此,命令上下文中的每个节点都将关闭,再次调用
close
方法


另外,这两个命令都会优雅地关闭节点。

我在问题中提到了我真正想要的:“优雅地关闭节点”我通常看到
close()
与宽限期一起使用。我不确定Elasticsearch的
节点
类是否允许提供一个宽限期(通常以毫秒为单位),但如果是这样的话,您应该提供一个宽限期以允许正常关闭/关闭。
node.client().admin().cluster().prepareNodesShutdown().execute().actionGet();