如何使用java列出elasticsearch的所有索引名称?

时间:2015-12-15 14:15:43

标签: java elasticsearch

在我的弹性搜索中,我希望得到集群的所有索引名称。我怎么用java? 我搜索互联网,但没有太多有用的信息。

3 个答案:

答案 0 :(得分:1)

您绝对可以使用以下简单的Java代码执行此操作:

List<IndexMetaData> indices = client.admin().cluster()
    .prepareState().get().getState()
    .getMetaData().getIndices();

您获得的列表包含ES群集中​​所有可用索引的详细信息。

答案 1 :(得分:1)

您可以使用:

client.admin().indices().prepareGetIndex().setFeatures().get().getIndices();

使用不带参数的setFeatures()来获取索引名称。否则,默认情况下也会返回其他数据,例如索引的MAPPINGSSETTINGS

答案 2 :(得分:0)

感谢@ Val的回答。根据你的方法,我在我的项目中使用它,代码是:

ClusterStateResponse response = transportClient.admin().cluster() .prepareState() 
    .execute().actionGet(); 
String[] indices=response.getState().getMetaData().getConcreteAllIndices();

此方法可以将所有索引名称放入String数组中。该方法有效。

我认为有另一种方法,但未尝试过:

ImmutableOpenMap<String, MappingMetaData> mappings = node.client().admin().cluster()
    .prepareState().execute().actionGet().getState().‌getMetaData().getIndices(). 

然后,我们可以获取映射的键来获取所有索引。 再次感谢!