From 69de6114e99403830f06adcf765e4fb3c563eac5 Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期二, 29 九月 2020 18:20:21 +0800 Subject: [PATCH] get shards by index --- EsApi.go | 71 +++++++++++++++++++++++++++++++++-- 1 files changed, 67 insertions(+), 4 deletions(-) diff --git a/EsApi.go b/EsApi.go index 5d2ce5f..0c26de1 100644 --- a/EsApi.go +++ b/EsApi.go @@ -257,8 +257,8 @@ if err != nil { return nil, err } - if len(source) == 0{ - return source,nil + if len(source) == 0 { + return source, nil } faceSource := make([]map[string]interface{}, 0) for index, info := range source { @@ -358,8 +358,8 @@ if err != nil { return nil, err } - if len(source) == 0{ - return source,nil + if len(source) == 0 { + return source, nil } faceSource := make([]map[string]interface{}, 0) for index, info := range source { @@ -1735,3 +1735,66 @@ } return result, nil } + +type ShardInfo struct { + ShardIndex string `json:"shardIndex"` + ShardNum int `json:"shardNum"` + ShardRole string `json:"shardRole"` + ShardState string `json:"shardState"` + ShardDocs int `json:"shardDocs"` + ShardStore string `json:"shardStore"` + ShardIp string `json:"shardIp"` + ShardNode string `json:"shardNode"` +} + +//鑾峰彇绱㈠紩鍒嗙墖淇℃伅 +func GetShardsByIndex(serverIp string, serverPort string, indexName string) ([]ShardInfo, error) { + url := "http://" + serverIp + ":" + serverPort + "/_cat/shards?v" + buf, err := EsReq("GET", url, []byte("")) + if err != nil { + return nil, err + } + var inf = []ShardInfo{} + res := strings.Split(string(buf), "\n")[1:] + for _, r := range res { + if r != "" { + + inx := strings.Fields(r) + index := inx[0] + shard, _ := strconv.Atoi(inx[1]) + prired := inx[2] + if prired == "r" { + prired = "replica" + } + if prired == "p" { + prired = "primary" + } + state := "" + docs := 0 + store := "" + ip := "" + node := "" + if state == "STARTED" { + docs, _ = strconv.Atoi(inx[4]) + store = inx[5] + ip = inx[6] + node = inx[7] + } + if index == indexName { + inf = append(inf, ShardInfo{ + ShardIndex: index, + ShardNum: shard, + ShardRole: prired, + ShardState: state, + ShardDocs: docs, + ShardStore: store, + ShardIp: ip, + ShardNode: node, + }) + + } + } + + } + return inf, nil +} -- Gitblit v1.8.0