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

时间:2014-02-05 15:17:06

标签: java elasticsearch

拥有一个包含单个节点的集群:

Node node = NodeBuilder.nodeBuilder().loadConfigSettings(true).node();

有什么区别?

node.close();

node.client().admin().cluster().prepareNodesShutdown().execute().actionGet();

从java中正常关闭节点/集群的推荐方法是什么?

2 个答案:

答案 0 :(得分:1)

两个提到的操作都有相同的效果。可能的区别在于它们影响的节点。

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

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

此外,两个命令都可以正常关闭节点。

答案 1 :(得分:0)

  

如果你设法在未连接的数据报套接字上使用shutdown(),那么   将简单地使套接字不可用于进一步send()和recv()   调用(请记住,如果连接()数据报,则可以使用这些调用   插座。)

     

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

但是,就 Elasticserach 而言,API并未特别提及任何差异(只有Client exampleNodes Shutdown example) 。这些是常见的定义差异。最好联系他们的开发(网站底部有一个选项),以获得有关其库实现的更详细说明。

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