2017-02-12 1 views
0

java elasticsearch clientを開いたり閉じたりするときの良い習慣は何ですか? 各リクエストの間にそれを開いて閉じますか?または、すべての要求に対してクライアントの単一インスタンスを使用できますか?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(); 

「スタートアップ時」と「シャットダウン時」のコメント行が表示されます。したがって基本的にはclient.close()に電話する必要があります。

1

すべてのリクエストに対して単一のクライアントを使用する必要があります。

接続を開くのはコストのかかる操作であり、要求を発行するたびに1つずつ開閉する必要はありません。

サーバーまたはアプリケーションを終了するときにクライアントを閉じるだけです。

関連する問題