Java ElasticSearch为什么在客户端或节点上调用close()?
在客户端或节点上调用Java ElasticSearch为什么在客户端或节点上调用close()?,java,elasticsearch,Java,elasticsearch,在客户端或节点上调用close()有什么原因吗?如果不这样做,会产生什么影响 Node node = nodeBuilder().client(true).node(); Client client = node.client(); // index some stuff client.close(); // <-- why do this ? node.close(); // <-- why do this ? Node Node=nodeBuilder().client(tru
close()
有什么原因吗?如果不这样做,会产生什么影响
Node node = nodeBuilder().client(true).node();
Client client = node.client();
// index some stuff
client.close(); // <-- why do this ?
node.close(); // <-- why do this ?
Node Node=nodeBuilder().client(true).Node();
Client=node.Client();
//索引一些东西
client.close();// 如果您可以为整个应用程序共享同一个客户端实例,这肯定会更好
因此,不要每次需要时都打开一个新节点和一个新客户端。共享(使用工厂)
当您停止应用程序(或JVM)时,最好关闭节点,而不是让其他节点作为异常获取该信息
但我不确定我是否回答了你的问题 如果您可以为整个应用程序共享同一个客户端实例,肯定会更好
因此,不要每次需要时都打开一个新节点和一个新客户端。共享(使用工厂)
当您停止应用程序(或JVM)时,最好关闭节点,而不是让其他节点作为异常获取该信息
但我不确定我是否回答了你的问题 考虑以下代码片段:
// on startup
Node node = nodeBuilder().node();
Client client = node.client();
// on shutdown
node.close();
根据,当您创建节点时,它将加入本地弹性搜索集群。这意味着它会向群集中的其他节点宣布自己。。。并开始侦听来自其他节点或客户端的请求
当应用程序退出并且JVM终止时,节点显然无法再处理来自其他节点的请求
- 如果应用程序如上所述调用
node.close()
,该节点将告诉其他节点它将离开,以便其他节点知道不再发送任何请求
- 如果您的应用程序不调用
节点.close()
,则其他节点将不知道此节点已离开,并可能继续向其发送请求。这些请求将失败,可能导致异常、日志消息等。至少,向无法响应的节点发送请求是浪费时间/资源
显然,如果您的应用程序是集群中唯一的节点,那么这是没有意义的。但是,做出这样的假设是不好的,而且可能值得(至少)在当前应用程序的节点对象上调用close()
的小开销。考虑以下代码片段:
// on startup
Node node = nodeBuilder().node();
Client client = node.client();
// on shutdown
node.close();
根据,当您创建节点时,它将加入本地弹性搜索集群。这意味着它会向群集中的其他节点宣布自己。。。并开始侦听来自其他节点或客户端的请求
当应用程序退出并且JVM终止时,节点显然无法再处理来自其他节点的请求
- 如果应用程序如上所述调用
node.close()
,该节点将告诉其他节点它将离开,以便其他节点知道不再发送任何请求
- 如果您的应用程序不调用
节点.close()
,则其他节点将不知道此节点已离开,并可能继续向其发送请求。这些请求将失败,可能导致异常、日志消息等。至少,向无法响应的节点发送请求是浪费时间/资源
显然,如果您的应用程序是集群中唯一的节点,那么这是没有意义的。但是,做出这样的假设是不好的,而且可能值得为(至少)当前应用程序的节点对象调用close()
的小开销。是的,我对整个应用程序使用相同的客户机实例。您是否能够详细说明“最好关闭节点,而不是让其他节点作为异常获取该信息”。更好的原因是什么?是的,我在整个应用程序中使用相同的客户端实例。您是否能够详细说明“最好关闭节点,而不是让其他节点作为异常获取该信息”。更好的原因是什么?您知道客户端节点(.client(true),即:不存储数据的节点等)是否仍从其他节点接收消息吗?您知道客户端节点(.client(true),即:不存储数据的节点等)是否仍从其他节点接收消息吗?