【问题标题】:While initializing RestHighLevel client do we always need to use new RestHighLevel client and new host?在初始化 RestHighLevel 客户端时,我们是否总是需要使用新的 RestHighLevel 客户端和新主机?
【发布时间】:2021-02-25 05:32:41
【问题描述】:

RestHighLevelClient 客户端 = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));

我的问题是我们总是需要使用新的 HttpHost 吗?有没有办法可以维护一个连接池?

我们有 GET 和 POST api,当前端触发请求时,总是调用 client.search()。因此,每次触发新请求时,都会创建一个新连接。有没有更好的处理方法。 ?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您不需要在您的应用程序中创建多个RestHighLevelClient,正如official doc 中提到的JHLRC 是一个线程安全客户端,通常由应用程序在启动时实例化,并且可以被您的所有请求使用应用。

    来自同一个文档

    RestHighLevelClient 是线程安全的。它通常被实例化 由应用程序在启动时或第一个请求时 执行。

    JHLRC 在内部维护连接池,还负责 Elasticsearch 节点之间的负载平衡,因此您不必担心这些内部问题。

    【讨论】:

      猜你喜欢
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多