2017-02-12 3 views
0

Я хотел бы знать, что является хорошей практикой при открытии и закрытии клиента java elasticsearch. Должен ли я открывать и закрывать его между каждым запросом? Или я могу использовать один экземпляр клиента для всех запросов?Когда я закрываю TransportClient в 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

Я думаю, что вам не нужно закрывать клиента транспорта после каждого запроса. Это будет слишком много накладных расходов.

См. Документы 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

Вы должны использовать один клиент для всех ваших запросов.

Открытие соединения является дорогостоящей операцией, и вы не хотите открывать и закрывать ее каждый раз, когда вы отправляете запрос.

Просто закройте клиента, когда вы закончите свой сервер или приложение.

 Смежные вопросы

  • Нет связанных вопросов^_^