我何时在Elasticsearch中关闭TransportClient?

时间:2017-02-12 16:02:37

标签: java elasticsearch

我想知道打开和关闭java elasticsearch客户端时的好习惯。 我是否在每个请求之间打开和关闭它?或者我可以为所有请求使用单个客户端实例吗?

private Client client;

@PostConstruct
public void init() {
    try {
        client = new PreBuiltTransportClient(Settings.EMPTY)
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host), port));
    } catch (UnknownHostException e) {
        LOGGER.error("Unable to create ESClient : {}", e);
    }
}

@PreDestroy
public void destroy() {
    client.close();
}

谢谢!

2 个答案:

答案 0 :(得分:4)

我认为您不必在每次请求后关闭传输客户端。这将是一个太大的开销。

查看文档here

// on startup

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300))
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host2"), 9300));

// on shutdown

client.close();

在那里你可以看到“启动时”和“关机时”的注释行。所以基本上告诉你何时应该致电client.close()

答案 1 :(得分:2)

您应该为所有请求使用单个客户端。

打开连接是一项代价高昂的操作,每次发出请求时都不想打开和关闭连接。

结束服务器或应用程序时,只需关闭客户端即可。