Elasticsearch 传输客户端连接
Elasticsearch Transport Client connection
我正在使用连接到 Elasticsearch 的 Servlet 构建一个搜索 Web 应用程序。我有一个关于 Elasticsearch 的 Transport 模块的问题。我正在使用实现 ServletContextListener 的 class 中的 TransportClient 打开与 Elasticsearch 的连接。下面是 ElasticsearchServletContextListener class 的代码。
public class ElasticsearchContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("Starting up!");
try {
Client client = TransportClient.builder().build().addTransportAddress(
new InetSocketTransportAddress(InetAddress.getByName("IP-address"),9300));
//Storing the client connection in a static variable
Parameters.setESclient(client);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
Parameters.getESclient().close();
System.out.println("Shutting down!");
}
}
现在,每当用户搜索查询时,它都会使用在 ServletContextListener class 中初始化的相同“客户端”连接。客户端连接能否同时处理多个请求?还是每个用户都需要一个单独的客户端连接来查询 elasticsearch?谢谢您的帮助。
那个Client
实例能够处理多个调用和处理多个线程。而且您应该只拥有一个 Client 实例,因为创建一个实例的成本很高。
我正在使用连接到 Elasticsearch 的 Servlet 构建一个搜索 Web 应用程序。我有一个关于 Elasticsearch 的 Transport 模块的问题。我正在使用实现 ServletContextListener 的 class 中的 TransportClient 打开与 Elasticsearch 的连接。下面是 ElasticsearchServletContextListener class 的代码。
public class ElasticsearchContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("Starting up!");
try {
Client client = TransportClient.builder().build().addTransportAddress(
new InetSocketTransportAddress(InetAddress.getByName("IP-address"),9300));
//Storing the client connection in a static variable
Parameters.setESclient(client);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
Parameters.getESclient().close();
System.out.println("Shutting down!");
}
}
现在,每当用户搜索查询时,它都会使用在 ServletContextListener class 中初始化的相同“客户端”连接。客户端连接能否同时处理多个请求?还是每个用户都需要一个单独的客户端连接来查询 elasticsearch?谢谢您的帮助。
那个Client
实例能够处理多个调用和处理多个线程。而且您应该只拥有一个 Client 实例,因为创建一个实例的成本很高。