当应用程序调用多个 Elasticsearch 端点时初始化 JestClient
Initializing JestClient when application calls multiple Elasticsearch endpoints
我的 API 目前使用 JestClient 调用一个 Elasticsearch 端点。我想添加一些需要调用第二个不同的 Elasticsearch 端点的功能。当您必须在初始化 JestClient 时指定端点时,这怎么可能?
@Provides
@Singleton
public JestClient jestClient() {
JestClientFactory factory = new JestClientFactory();
factory.setHttpClientConfig(
new HttpClientConfig.Builder("http://localhost:9200")
.build());
return factory.getObject();
}
我的应用程序设计使用 Singleton 类 进行这些初始化,所以除了为我的第二个端点使用不同的 Elasticsearch 客户端之外,我不确定如何解决这个问题。
您可以根据参数创建工厂和 return 客户端。
该参数可以是 url 本身,也可以只是代表端点的枚举。
或者您可以创建两个客户端,并根据调用 classes 时的用例,如果您需要两个客户端,则注入两个客户端,或者如果您需要一个特定的客户端,则将该客户端注入您的class,你只需要为你的客户端起一个不同的名字(比如 clientv2 代表 es 2 版本,clientv5 代表 ES 5.x 版本),这也很容易,因为你知道你的用例并了解您的 classes.
中需要的所有客户端版本
附带说明一下,JEST 的积极开发很久以前就停止了,现在 elasticsearch 提供了官方 java 客户端 Java high level rest client,所以恕我直言,你应该切换到 JHLRC 以获得最大受益并使未来的迁移变得容易,我认为这是你的用例。
我的 API 目前使用 JestClient 调用一个 Elasticsearch 端点。我想添加一些需要调用第二个不同的 Elasticsearch 端点的功能。当您必须在初始化 JestClient 时指定端点时,这怎么可能?
@Provides
@Singleton
public JestClient jestClient() {
JestClientFactory factory = new JestClientFactory();
factory.setHttpClientConfig(
new HttpClientConfig.Builder("http://localhost:9200")
.build());
return factory.getObject();
}
我的应用程序设计使用 Singleton 类 进行这些初始化,所以除了为我的第二个端点使用不同的 Elasticsearch 客户端之外,我不确定如何解决这个问题。
您可以根据参数创建工厂和 return 客户端。 该参数可以是 url 本身,也可以只是代表端点的枚举。
或者您可以创建两个客户端,并根据调用 classes 时的用例,如果您需要两个客户端,则注入两个客户端,或者如果您需要一个特定的客户端,则将该客户端注入您的class,你只需要为你的客户端起一个不同的名字(比如 clientv2 代表 es 2 版本,clientv5 代表 ES 5.x 版本),这也很容易,因为你知道你的用例并了解您的 classes.
中需要的所有客户端版本附带说明一下,JEST 的积极开发很久以前就停止了,现在 elasticsearch 提供了官方 java 客户端 Java high level rest client,所以恕我直言,你应该切换到 JHLRC 以获得最大受益并使未来的迁移变得容易,我认为这是你的用例。