簡體   English   中英

Elasticsearch傳輸客戶端連接

[英]Elasticsearch Transport Client connection

我正在使用連接到Elasticsearch的Servlet構建搜索Web應用程序。 我有一個關於Elasticsearch的Transport模塊的問題。 我正在使用實現ServletContextListener的類中的TransportClient打開與Elasticsearch的連接。 下面是ElasticsearchServletContextListener類的代碼。

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類中初始化的相同“客戶端”連接。 客戶端連接可以同時處理多個請求嗎? 或者每個用戶是否需要單獨的客戶端連接來查詢elasticsearch? 謝謝您的幫助。

Client實例能夠處理多個調用並處理多個線程。 而且你應該只有一個Client實例,因為它創建一個很昂貴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM