Java 如何使用RestHighLevelClient获取集群状态或索引元数据?
我正在将应用程序从Java 如何使用RestHighLevelClient获取集群状态或索引元数据?,java,
elasticsearch,resthighlevelclient,Java,
elasticsearch,Resthighlevelclient,我正在将应用程序从TransportClient迁移到RestHighLevelClient。现在,我有以下获取索引元数据的方法: public IndexMetaData getIndexMetaData(String indexAlias) { ClusterState state = transportClient.admin().cluster().prepareState() .setIndices(new String
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;
}
}
公共索引元数据getIndexMetaData(字符串索引){
ClusterState状态=transportClient.admin().cluster().prepareState()
.setIndexes(新字符串[]{indexAlias})
.execute()
.actionGet()
.getState();
设置索引=GetIndicatesByAlias(indexAlias);
如果(index.size()>0){
返回state.metaData().index(index.iterator().next());
}
否则{
返回null;
}
}
基于,RestHighLevelClient
不支持获取集群状态
如何使用
RestHighLevelClient
替换上述方法?如果我理解正确,您有一个别名,并希望获得它背后的所有索引?这应该是可行的
试着这样做:
GetAliasesResponse getAliasResponse=
client.index().getAlias(新的GetAliasesRequest(“别名”),
请求选项(默认值);
getAliasResponse.getAliases().keySet()//键具有索引,值为别名
PS:如果我理解正确,您可能想添加一个检查
existsAlias()
如果我理解正确,您有一个别名,并且希望获得它背后的所有索引?这应该是可行的
试着这样做:
GetAliasesResponse getAliasResponse=
client.index().getAlias(新的GetAliasesRequest(“别名”),
请求选项(默认值);
getAliasResponse.getAliases().keySet()//键具有索引,值为别名
PS:您可能需要添加对
existsAlias()
的检查。我想要获取特定索引的IndexMetaData
,而不是索引别名。使用RestHighLevelClient
有什么方法可以实现这一点吗?我认为现在不支持这种方法。但是你到底想做什么呢?另一种选择是退回到低级REST客户端,但您需要手动处理响应。该方法是其他组件正在使用的库的一部分,因此我尝试保持其签名完整,以不影响其调用者。老实说,如果Elasticsearch团队没有提供旧客户机的所有功能,我不理解为什么它会推出RestHighLevelClient
。这和类型存在性检查是此类缺失API的两个示例。您是指\u type
?因为该功能已在7.0中删除。而且应该很少有使用案例会让您陷入集群状态。这更像是通过低级REST客户端使用转义图案填充进行的清理。我想要获取特定索引的IndexMetaData
,而不是索引别名。使用RestHighLevelClient
有什么方法可以实现这一点吗?我认为现在不支持这种方法。但是你到底想做什么呢?另一种选择是退回到低级REST客户端,但您需要手动处理响应。该方法是其他组件正在使用的库的一部分,因此我尝试保持其签名完整,以不影响其调用者。老实说,如果Elasticsearch团队没有提供旧客户机的所有功能,我不理解为什么它会推出RestHighLevelClient
。这和类型存在性检查是此类缺失API的两个示例。您是指\u type
?因为该功能已在7.0中删除。而且应该很少有使用案例会让您陷入集群状态。这更像是通过低级REST客户端使用转义图案填充进行的清理。