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

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),即:不存储数据的节点等)是否仍从其他节点接收消息吗?