下面是我们使用的maven版本
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>5.6.13</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.6.13</version>
</dependency>
private RestHighLevelClient buildRestClient(ElasticRequestVO elasticRequestVO) {
String elasticHost =
StringUtils.isNotEmpty(elasticRequestVO.getElasticHost()) ? elasticRequestVO.getElasticHost()
: elasticSearchHost;
int elasticPort =
(elasticRequestVO.getElasticPort() != 0) ? elasticRequestVO.getElasticPort() : elasticSearchPort;
String elasticUser =
StringUtils.isNotEmpty(elasticRequestVO.getElasticUser()) ? elasticRequestVO.getElasticUser()
: elasticSearchUser;
String elasticPassword =
StringUtils.isNotEmpty(elasticRequestVO.getElasticPassword()) ? elasticRequestVO.getElasticPassword()
: elasticSearchPassword;
HttpHost host = new HttpHost(elasticHost, elasticPort);
RestClientBuilder restClientBuilder = RestClient.builder(host);
Optional<String> encodedAuth = getAuthenticationHeader(elasticUser, elasticPassword);
if (encodedAuth.isPresent()) {
Header[] requestHeaders =
new Header[] {new BasicHeader(org.apache.http.HttpHeaders.AUTHORIZATION, encodedAuth.get())};
restClientBuilder.setDefaultHeaders(requestHeaders);
}
return new RestHighLevelClient(restClientBuilder.build());
}如何关闭RestHighLevelClient?
发布于 2019-11-06 12:12:15
返回RestHighLevelClient,从buildRestClient()返回RestClient
这里,如果代码示例
private RestClient buildRestClient(ElasticRequestVO elasticRequestVO) {
String elasticHost =
StringUtils.isNotEmpty(elasticRequestVO.getElasticHost()) ? elasticRequestVO.getElasticHost()
: elasticSearchHost;
int elasticPort =
(elasticRequestVO.getElasticPort() != 0) ? elasticRequestVO.getElasticPort() : elasticSearchPort;
String elasticUser =
StringUtils.isNotEmpty(elasticRequestVO.getElasticUser()) ? elasticRequestVO.getElasticUser()
: elasticSearchUser;
String elasticPassword =
StringUtils.isNotEmpty(elasticRequestVO.getElasticPassword()) ? elasticRequestVO.getElasticPassword()
: elasticSearchPassword;
HttpHost host = new HttpHost(elasticHost, elasticPort);
RestClientBuilder restClientBuilder = RestClient.builder(host);
Optional<String> encodedAuth = getAuthenticationHeader(elasticUser, elasticPassword);
if (encodedAuth.isPresent()) {
Header[] requestHeaders =
new Header[] {new BasicHeader(org.apache.http.HttpHeaders.AUTHORIZATION, encodedAuth.get())};
restClientBuilder.setDefaultHeaders(requestHeaders);
}
return restClientBuilder.build();
}发布于 2019-10-31 19:16:12
如果您看到关闭是如何在最新版本(例如6.2.4 )中实现的,您将发现RestHighLevelClient刚刚释放了RestClient。
因此,对于关闭,我可以提供您只调用restHighLevelClient.getLowLevelClient()并关闭rest客户端lowLevelRestClient.close()。
如果看一下源代码,就会发现这只是rest客户端的一个包装器。
发布于 2020-02-28 15:37:15
我的RestHighLevelClient版本是5.6.3,我找不到像restHighLevelClient.getLowLevelClient()或restHighLevelClient.close()这样的方法,所以我使用反射来关闭restClient
Field restClientField = RestHighLevelClient.class.getDeclaredField("client");
restClientField.setAccessible(true);
RestClient restclient = (RestClient)restClientField.get(restHighLevelClient);
restClient.close();https://stackoverflow.com/questions/58649477
复制相似问题