【问题标题】:Elastic Search TransportClient弹性搜索传输客户端
【发布时间】:2017-04-29 17:38:15
【问题描述】:

我正在使用ElasticSearch Java 客户端查询弹性搜索。每次我必须拨打电话时,我都会初始化传输客户端。这是正确的方法还是我应该在应用程序启动期间初始化一次并在关闭时关闭它。

下面是初始化客户端的代码

 Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", Config.getEsClusterName()).put("client.transport.ignore_cluster_name", true).build();
 Client esClient = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress(Config.getEsHost(), Config.getEsPort()));

【问题讨论】:

    标签: java elasticsearch


    【解决方案1】:

    elasticsearch Java 客户端是多线程的,每个新实例都有很大的开销。

    这应该在程序开始时实例化一次,并在所有调用者之间共享。

    最好的问候

    【讨论】:

      【解决方案2】:

      我创建了一个 github 存储库,用于使用 java elasticsearch 传输客户端[带有单例设计模式]..请使用它。refer

      【讨论】:

        【解决方案3】:

        TransportClient 在内部维护一个连接池,它们将在 TransportClient 对象的整个生命周期中保持活动状态。

        因此您应该使用静态来存储 TransportClient 对象,或者实现一个处理连接的单例类。您的其余代码将仅与此类通信。

        【讨论】:

          猜你喜欢
          • 2019-07-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-20
          • 2016-11-08
          • 1970-01-01
          • 2016-01-22
          • 2019-08-25
          相关资源
          最近更新 更多