2017-02-12 76 views
0

我想知道什麼是打開和關閉java elasticsearch客戶端時的良好做法。 我是否在每次請求之間打開和關閉它?或者我可以爲所有請求使用單個客戶端實例嗎?什麼時候關閉Elasticsearch中的TransportClient?

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

我想你不必在每次請求後關閉傳輸客戶端。這將是一個過多的開銷。請參閱文檔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(); 

在那裏你可以看到註釋行「on startup」和「on shutdown」。所以基本上,這告訴你什麼時候應該打電話給client.close()

1

您應該爲您的所有請求使用單個客戶端。

打開連接是一項代價高昂的操作,每次發出請求時都不想打開和關閉連接。

當您結束服務器或應用程序時,只需關閉客戶端即可。

相關問題