我尝试通过如下代码获取es群集中的所有别名:

public Set<String> getAllExitAlias(int timeOut) {
    Set<String> result = new HashSet<>();
    try {
        GetAliasesResponse response = eagleTcpClient.getClient().admin().indices().getAliases(new GetAliasesRequest("_all")).get(timeOut, TimeUnit.SECONDS);
        ImmutableOpenMap<String, List<AliasMetaData>> aliasesMap = response.getAliases();
        ... how can i build the result set of alias with aliasesMap as upon?
    } catch (Exception exp) {
        throw new RuntimeException("Error! A error occur when query exit alias!");
    }
}

最佳答案

我有代码的解决方案:

public Set<String> getAllExistAlias(int timeOut) {
    Set<String> result = new HashSet<>();
    try {
        GetAliasesResponse response = eagleTcpClient.getClient().admin().indices().getAliases(new GetAliasesRequest("_all")).get(timeOut, TimeUnit.SECONDS);
        ImmutableOpenMap<String, List<AliasMetaData>> aliasesMap = response.getAliases();
        for (ObjectCursor<List<AliasMetaData>> curAliases : aliasesMap.values()) {
            for (AliasMetaData aliasMeta: curAliases.value) {
                result.add(aliasMeta.alias());
            }
        }
         return result;
    } catch (Exception exp) {
        throw new RuntimeException("Error! A error occur when query exist alias!");
    }
}

07-22 04:46