Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用RestHighLevelClient获取集群状态或索引元数据?_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Resthighlevelclient - Fatal编程技术网 elasticsearch,resthighlevelclient,Java,elasticsearch,Resthighlevelclient" /> elasticsearch,resthighlevelclient,Java,elasticsearch,Resthighlevelclient" />

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客户端使用转义图案填充进行的清理。