我正在使用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()));
答案 0 :(得分:20)
elasticsearch Java客户端是多线程的,每个新实例都有很大的开销。
这应该在程序开始时实例化一次,并在所有呼叫者之间共享。
最好的问候
答案 1 :(得分:4)
我创建了一个github存储库,用于使用java elasticsearch传输客户端[使用单例设计模式] ..请...使用它。refer
答案 2 :(得分:0)
TransportClient维护一个内部连接池,它们将在TransportClient对象的整个生命周期中保持活动状态。
因此,您应该使用静态来存储TransportClient对象,或者实现处理连接的单例类。其余代码将仅与此类通信。