在我的弹性搜索中,我希望得到集群的所有索引名称。我怎么用java? 我搜索互联网,但没有太多有用的信息。
答案 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()
来获取索引名称。否则,默认情况下也会返回其他数据,例如索引的MAPPINGS
和SETTINGS
。
答案 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().
然后,我们可以获取映射的键来获取所有索引。 再次感谢!