我正在将应用程序从TransportClient
迁移到RestHighLevelClient
。现在我有以下方法来获取索引元数据:
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
替换上述方法?
如果我理解正确的话,你有一个别名,并且想得到它后面的所有索引?这对于GetAliasesRequest
来说应该是可行的。
试试这样的东西:
GetAliasesResponse getAliasResponse =
client.indices().getAlias(new GetAliasesRequest("alias"),
RequestOptions.DEFAULT);
getAliasResponse.getAliases().keySet(); //key has the indices, value the aliases
PS:您可能需要添加existsAlias()
的检查。