java 使用RestHighLevelClient获取ES的所有索引名
工作有个业务需求是需要获取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获取所有索引名字的方法。
上一篇:
IDEA上Java项目控制台中文乱码