java 使用RestHighLevelClient获取ES的所有索引名
工作有个业务需求是需要获取ES中的所有索引名,之前是使用TransportClent去获取,但是ES加密了,而且TransportClient官方也不推荐使用,所以用了RestHighLevelClient去获取。版本如下:jdk版本:1.8elasticsearch.client版本:6.4.0附上代码:这是获取高级客户端的方法@Getter @Setterprivate static Rest
·
工作有个业务需求是需要获取ES中的所有索引名,之前是使用TransportClent去获取,但是ES加密了,而且TransportClient官方也不推荐使用,所以用了RestHighLevelClient去获取。
版本如下:
jdk版本:1.8
elasticsearch.client版本:6.4.0
附上代码:
这是获取高级客户端的方法
@Getter @Setter
private static RestHighLevelClient restClient = null;
public static RestHighLevelClient getClient() {
try {
if(restClient != null){
return restClient;
}
synchronized (ESConnection.class) {
if(restClient != null){
return restClient;
}
// 用户认证对象
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
// 设置账号密码
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("账号", "密码"));
// 创建rest client对象
RestClientBuilder builder = RestClient.builder(new HttpHost("ES的IP地址", ES的端口,不是节点端口))
.setHttpClientConfigCallback(new HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
});
restClient = new RestHighLevelClient(builder);
return restClient;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
以下是查询方法
public static void main(String[] args) {
RestHighLevelClient restClient = getClient();
try {
GetAliasesRequest request = new GetAliasesRequest();
GetAliasesResponse getAliasesResponse = restClient.indices().getAlias(request,RequestOptions.DEFAULT);
Map<String, Set<AliasMetaData>> map = getAliasesResponse.getAliases();
Set<String> indices = map.keySet();
for (String key : indices) {
System.out.println(key);
}
} catch (IOException e) {
e.printStackTrace();
}
}
运行结果如图:
以上就是使用HighLevelClient获取所有索引名字的方法。
更多推荐
已为社区贡献1条内容
所有评论(0)