Это вопрос структуры (что лучше всего использовать).Структура клиента Java Elasticsearch
У меня есть 50 сервлетов для доменного сайта, которым я управляю, где клиент делает js-вызовы в Java Servlet, который в свою очередь вызывает ElasticSearch, а затем сервлет отвечает клиенту.
В каждом из моих сервлетов сразу после имени класса я создаю статические настройки и конфигурацию клиента для моего ES-соединения. Это связано с тем, что в каждом сервлете могут быть два или более метода, которые называют один и тот же ES-кластер, и я не хочу создавать эту конфигурацию в каждом методе.
/**
* Servlet implementation class Results
*/
@WebServlet("/Results")
public class Results extends HttpServlet {
private static final long serialVersionUID = 1L;
Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "elastictest").build();
Client client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress("143.79.236.xxx", 9300));
ОДНАКО, теперь мне интересно, должен ли я сделать это 50 раз (1 конфиг в верхней части каждого класса)? Или я создаю один новый класс java с тем же самым конфигом и в каждой ссылке сервлета, что один новый класс java? Это экономит память и улучшает практику?
**--Inside name.java --**
public static Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "elastictest").build();
public static Client client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress("143.79.236.xxx", 9300));
--Inside ВСЕ методы в 50 сервлетов ссылки name.client instead--
SearchResponse response = name.client.prepareSearch().setQuery(......
Кроме того, в нижней части моего doPost (после того, как я послал printWriter.println (результаты)) Я закрываю клиента? client.close();
спасибо.
Это делает много смысла, я никогда не думал. Спасибо!^1 – Chris