• Elasticsearch查询分片信息


    package com.easy.es.monitor;
    
    import com.easy.es.common.CommonUtils;
    import com.easy.es.network.HttpClientResp;
    import com.easy.es.network.HttpUtils;
    import lombok.Data;
    
    import java.io.IOException;
    import java.net.URISyntaxException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @author a.du on 2022/10/31.
     */
    public class Shards {
        //index                                  shard prirep state      docs    store ip             node
        private static final String API = "/_cat/shards";
    
        public static List getShardInfo(String host, String port, Map params) throws IOException, URISyntaxException {
            HttpClientResp httpClientResp = HttpUtils.doGet(CommonUtils.getUrl(host, port, API), params);
            if (200 == httpClientResp.getCode()) {
                String[] result = httpClientResp.getContent().split("\n");
                List shardInfoList = new ArrayList<>();
                for (int i = 1; i < result.length; i++) {
                    ShardInfo shardInfo = new ShardInfo();
                    String[] temp = result[i].split("\\s+");
                    //10.101.129.205 12463 6.3.2 - 10.101.129.205:11463
                    shardInfo.setIndexName(temp[0]);
                    shardInfo.setShard(temp[1]);
                    shardInfo.setPrirep(temp[2]);
                    shardInfo.setState(temp[3]);
                    shardInfo.setDocs(temp[4]);
                    shardInfo.setStore(temp[5]);
                    shardInfo.setIp(temp[6]);
                    shardInfo.setNode(temp[7]);
                    shardInfoList.add(shardInfo);
                }
                return shardInfoList;
            }
            return null;
        }
    }
    
    @Data
    class ShardInfo {
        /**
         * 索引名称
         */
        private String indexName;
        /**
         * 分片编号
         */
        private String shard;
        /**
         * 主分片:p 副本分片:r
         */
        private String prirep;
        /**
         * 状态:
         * INITIALIZING: 正在恢复
         * RELOCATING: 迁移中
         * STARTED: 已启动
         * UNASSIGNED: 未分配
         */
        private String state;
        /**
         * 文档数量
         */
        private String docs;
        /**
         * 占用磁盘空间
         */
        private String store;
        /**
         * ip
         */
        private String ip;
        /**
         * 节点
         */
        private String node;
    }
    
    测试用例:
    1. public class Main {
    2. public static void main(String[] args) {
    3. Map params = new HashMap<>();
    4. params.put("index", "ocontent_20220905");
    5. System.out.println(JSON.toJSONString(Shards.getShardInfo("10.10.19.24", "1463",params)));
    6. } catch (IOException e) {
    7. e.printStackTrace();
    8. } catch (URISyntaxException e) {
    9. e.printStackTrace();
    10. }
    11. }
    12. }

  • 相关阅读:
    Echarts的legend的特殊图例展示
    Linux与Shell学习--shell系列12--流程控制5(case ... esac循环)
    pyenv fails with : ModuleNotFoundError: No module named ‘_ctypes‘ error
    在 SQL 中计算两个时间戳相隔的天时分秒
    Spring 长事务导致connection closed,又熬了一个大夜!
    React 基础使用
    Mysql 性能优化就是这么简单,大佬带你深入浅出
    算法篇 滑动窗口 leetcode 长度最小的子数组
    在单片机中什么是FLASH
    软考高级 2022年11月信息系统项目管理师
  • 原文地址:https://blog.csdn.net/duzm200542901104/article/details/127609285