![](/img/trans.png)
[英]Close processing is slow, in elasticsearch's TransportClient. I want to quickly
[英]When do I close TransportClient in 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();
}
謝謝 !
我認為您不必在每次請求后關閉運輸客戶端。 這將是太多的開銷。
在此處查看文檔。
// 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()
。
您應該為所有請求使用一個客戶端。
打開連接是一項昂貴的操作,並且您不想在每次發出請求時都打開和關閉一個連接。
結束服務器或應用程序后,只需關閉客戶端即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.