我一直试图通过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();
但从这一点来说,我找不到我需要的信息。这可能吗?
答案 0 :(得分:3)
可以使用javadocs访问索引统计信息。
使用cURL:0.1 + 0.2 != 0.3
curl -XGET localhost:9200/index_name/_stats?pretty=true
下的store
使用size_in_bytes
:Java 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。