首页 > 解决方案 > 如何使用 RestHighLevelClient 获取集群状态或索引元数据?

问题描述

我正在将应用程序TransportClientRestHighLevelClient. 现在我有以下获取索引元数据的方法:

public IndexMetaData getIndexMetaData(String indexAlias) {
    ClusterState state = transportClient.admin().cluster().prepareState()
                             .setIndices(new String[]{indexAlias})
                             .execute()
                             .actionGet()
                             .getState();
    Set<String> indices = getIndicesByAlias(indexAlias);
    if (indices.size() > 0) {
        return state.metaData().index(indices.iterator().next());
    }
    else {
        return null;
    }
}

基于https://github.com/elastic/elasticsearch/issues/27205RestHighLevelClient不支持获取集群状态。

如何使用 替换上述方法RestHighLevelClient

标签: javaelasticsearchresthighlevelclient

解决方案


如果我理解正确,您有一个别名并想要获取它背后的所有索引吗?这应该是可行的GetAliasesRequest

尝试这样的事情:

GetAliasesResponse getAliasResponse =
   client.indices().getAlias(new GetAliasesRequest("alias"),
                             RequestOptions.DEFAULT);
getAliasResponse.getAliases().keySet(); //key has the indices, value the aliases

PS:您可能需要为existsAlias().


推荐阅读