如何使用JAVA API执行_cat / indices / <index_name_with_reg_ex>?

时间:2017-03-24 18:29:51

标签: elasticsearch

我有一些名称为test-1-in,test-2-in,test-3-in的索引。我想从JAVA API做_cat / indices / test - * - in。这该怎么做? 我尝试使用IndexAdminClient但没有运气。

3 个答案:

答案 0 :(得分:1)

给定ElasticSearch Client对象:

client.admin().indices()
      .getIndex(new GetIndexRequest().indices("regex-*"))
      .actionGet().getIndices();

答案 1 :(得分:0)

我有一个解决方案:

final ClusterStateRequest clusterStateRequest = new ClusterStateRequest();
clusterStateRequest.clear().metaData(true);
final IndicesOptions strictExpandIndicesOptions = IndicesOptions.strictExpand();
clusterStateRequest.indicesOptions(strictExpandIndicesOptions);
ClusterStateResponse clusterStateResponse = client.admin().cluster().state(clusterStateRequest).get(); 
clusterStateResponse.getState().getMetadata().getIndices()

这将给出所有索引。之后,必须手动完成注册匹配。这是在elasticsearch源代码中为_cat实现所做的。

答案 2 :(得分:0)

如果要使用?v选项设置索引:

IndicesStatsRequestBuilder indicesStatsRequestBuilder = new 
IndicesStatsRequestBuilder(client, IndicesStatsAction.INSTANCE);
IndicesStatsResponse response = indicesStatsRequestBuilder.execute().actionGet();
for (Map.Entry<String, IndexStats> m : response.getIndices().entrySet()) {
   System.out.println(m);
}

每个条目都包含文档计数,存储空间使用情况等。您可以全部运行此文件或过滤某些索引。

PD:已通过5.6.0版本进行测试