ElasticSearch 通过获取Status获取备份文件占用空间的大小

ElasticSearch 通过获取Status获取备份文件占用空间的大小

ElasticSearch API

127.0.0.1:9200/_snapshot/备份仓库名/快照名/_status发送请求即可获取快照状态,可在stats.total_size_in_bytes中获取到备份的文件大小。注意的是这里获取的单位是byte,如果想直接获取已经转换好的单位,可以加上human参数,如下:

127.0.0.1:9200/_snapshot/备份仓库名/快照名/_status?human

此时返回的stats里会出现total_size字段,该字段会根据具体大小自动转换成MB、TB等单位。

关于这部分带human参数的返回字段描述,可以参照

https://github.com/elastic/elasticsearch/issues/18543#event-1647308307

JAVA API

如果要使用JAVA获取文件大小,首先要声明Client,我使用的是TransportClient,在配置文件中配置如下:

spring:
  data:
    #ElasticSearch地址
    elasticsearch:
      cluster-name: elasticsearch
      cluster-nodes: 127.0.0.1:9300

然后@AutoWired注入TransportClient transportClient

在需要使用的地方加入如下代码:

String[] snapshotsName = new String[]{"快照1","快照2}; //快照名,必须是字符数组
SnapshotsStatusRequest request = new SnapshotsStatusRequest().repository("c备份仓库名").snapshots(snapshotsName);
SnapshotsStatusResponse response = transportClient.admin().cluster().snapshotsStatus(request).actionGet(); //通过client和request获取response
List<SnapshotStatus> list = response.getSnapshots(); //获取response中的数据

至此获得到了snapshot status的信息。

其他的Client获取Response可以参考官方文档:

SnapShotStatus JAVA API
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.x/java-rest-high-snapshot-snapshots-status.html
Transport Clinet API
https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html
RestHighLevelClient API
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.x/java-rest-high-getting-started-initialization.html

可惜JAVA API中的实体类SnapshotStatus并没有针对human参数获取转换好格式的文件大小,只能通过snapshotStatusList.get(0).getStats().getTotalSize()获取到Long型的byte单位的备份文件大小。如果要手动转换,手动转换如下:

    public String revertSize(Long size){
        Float sizeFloat = size.floatValue();
        String[] NAME = new String[]{"byte","KB","MB","GB","TB"};
        int num = 0;
        while(sizeFloat/1024>=1){
            sizeFloat=sizeFloat/1024;
            num++;
        }
        return new DecimalFormat(".00").format(sizeFloat) + NAME[num];
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值