我什么时候在 Elasticsearch 中关闭 TransportClient?

Ore*_*ron 3 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();
}
Run Code Online (Sandbox Code Playgroud)

谢谢 !

Raj*_*hna 5

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

请参阅此处的文档。

// 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();
Run Code Online (Sandbox Code Playgroud)

在那里您可以看到“启动时”和“关闭时”的注释行。所以基本上这会告诉你什么时候应该调用client.close().