java—如何使用resthighlevelclient获取集群状态或索引元数据?

7fhtutme  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(1)|浏览(795)

我正在从服务器迁移应用程序 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/27205,的 RestHighLevelClient 不支持获取群集状态。
如何使用 RestHighLevelClient ?

oewdyzsn

oewdyzsn1#

如果我理解正确的话,你有一个别名,想得到它背后的所有索引?这应该是可行的 GetAliasesRequest .
尝试以下操作:

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

ps:您可能需要为添加支票 existsAlias() .

相关问题