可以通过Java API获取Elasticsearch索引的大小吗?

时间:2015-08-18 21:55:44

标签: java elasticsearch

我一直试图通过Java API获取我的Elasticsearch索引的大小,但我无法找到正确的调用来完成此任务。我发现了一些像这样的建议(https://groups.google.com/forum/#!topic/elasticsearch/jNCjCqAS1us),但它是从2012年开始的,似乎不再具有相关性。

我能够通过以下方式获得IndicesStatsResponse

IndicesStatsResponse response = client.admin().indices()
        .prepareStats(makeIndexName(tenant.getId()))
        .clear()
        .setStore(true)
        .execute()
        .actionGet();

但从这一点来说,我找不到我需要的信息。这可能吗?

3 个答案:

答案 0 :(得分:3)

可以使用javadocs访问索引统计信息。

  • 使用cURL:0.1 + 0.2 != 0.3 curl -XGET localhost:9200/index_name/_stats?pretty=true下的store

  • 使用size_in_bytesJava API是一个必须转换为JSON的响应,如果您想要阅读它。您可以使用IndexStatsResponse来解析te Json。

    gson

答案 1 :(得分:0)

IndicesStatsResponse response =client.admin().indices().prepareStats(indexName).clear().setStore(true).execute().actionGet();
ByteSizeValue bsv = response.getIndex(indexName).getTotal().getStore().getSize();

答案 2 :(得分:0)

使用RestHighLevelClient,并用es 7.1.0进行了测试:

RestHighLevelClient client = ...;

var resp = client.getLowLevelClient().performRequest(new Request("GET", "INDEX_NAME/_stats"));
var body =  new ObjectMapper().readTree(resp.getEntity().getContent());
var size = body.get("indices").get("INDEX_NAME").get("primaries").get("store").get("size_in_bytes");

我使用Jackson解析json。