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