From 705f76d542397154da2acf5461f2888828cbd5b8 Mon Sep 17 00:00:00 2001
From: putonghao <ynxwpth@163.com>
Date: 星期三, 14 九月 2022 14:38:55 +0800
Subject: [PATCH] update cluster name to elasticsearch.yml

---
 EsApi.go |  130 +++++++++++++++++++++++++++++++++++--------
 1 files changed, 106 insertions(+), 24 deletions(-)

diff --git a/EsApi.go b/EsApi.go
index 5d2ce5f..f690f7d 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 {
@@ -888,18 +888,25 @@
 		return statu, errors.New("http response interface can not change map[string]interface{}")
 	}
 	middle, ok := out["updated"].(float64)
-	if !ok {
+	batches,ok1 := out["batches"].(float64)
+	if !ok || !ok1{
 		logPrint("first updated change error!")
 		statu = 500
 		return statu, errors.New("first updated change error!")
 	}
-	if middle == 1 {
-		statu = 200
-		return statu, nil
-	}
-	if middle == 0 {
-		statu = 201
-		return statu, errors.New("宸茬粡淇敼")
+	if batches == 0 {
+		logPrint("no such doc in database")
+		statu = 400
+		return statu,errors.New("鐩爣鏁版嵁涓嶅瓨鍦�")
+	} else {
+		if middle == 1 {
+		    statu = 200
+		    return statu, nil
+	    }
+	    if middle == 0 {
+		    statu = 201
+		    return statu, errors.New("宸茬粡淇敼")
+	    }
 	}
 	return statu, nil
 }
@@ -944,7 +951,12 @@
 	isCollectStr := ""
 	isCollect := compareArgs.Collection
 	if isCollect != "" {
-		isCollectStr = "{\"term\":{\"isCollect\":\"" + isCollect + "\"}},"
+		//isCollectStr = "{\"term\":{\"isCollect\":\"" + isCollect + "\"}},"
+		if isCollect == "1" {
+			isCollectStr = "{\"term\":{\"isCollect\":true}},"
+		} else if isCollect == "0" {
+			isCollectStr = "{\"term\":{\"isCollect\":false}},"
+		}
 	}
 
 	//鍒ゆ柇甯冮槻绛夌骇
@@ -1276,10 +1288,19 @@
 }
 
 //鑱氬悎浠诲姟鍒楄〃锛宼askId+taskName
-func AggregateTaskList(serverIp string, serverPort string, indexName string, analyServerId string) (sources []map[string]interface{}, err error) {
+func AggregateTaskList(serverIp string, serverPort string, indexName string, analyServerId string, cameraIds []string) (sources []map[string]interface{}, err error) {
 	url := "http://" + serverIp + ":" + serverPort +
 		"/" + indexName + "/_search"
 	serverFilterStr := ""
+	cameIdFilterStr := ""
+	if cameraIds != nil && len(cameraIds) > 0 {
+		cameIdsStr := strings.Replace(strings.Trim(fmt.Sprint(cameraIds), "[]"), " ", "\",\"", -1)
+		cameIdFilterStr = `,{
+				"term": {
+				"cameraId": "` + cameIdsStr + `"
+					}
+                }`
+	}
 	if analyServerId != "" {
 		serverFilterStr = `,
 			"query": {
@@ -1288,8 +1309,9 @@
 				{
 				"term": {
 				"analyServerId": "` + analyServerId + `"
+					}
 				}
-				}
+ 				` + cameIdFilterStr + `
 			]
 			}
 		}`
@@ -1621,7 +1643,7 @@
 }
 
 //鎸夋棩鏈熻寖鍥达紝鏈嶅姟鍣↖d鍒犻櫎鏁版嵁
-func DeleteAnalyServerData(serverIp string, serverPort string, indexName string, startTime string, endTime string, analyServerId string) (result bool, err error) {
+func DeleteAnalyServerData(serverIp string, serverPort string, indexName string, startTime string, endTime string, analyServerId string) (total int, err error,) {
 	url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_delete_by_query"
 	deleteJson := `{
 	"query":{
@@ -1643,20 +1665,17 @@
 		}
 	}
 }	`
+	fmt.Println(url)
+	fmt.Println(deleteJson)
 	buf, err := EsReq("POST", url, []byte(deleteJson))
 	if err != nil {
-		return false, errors.New("璇锋眰澶辫触")
+		return -1, errors.New("璇锋眰澶辫触")
 	}
 	deleteRes, err := SourceDeleted(buf)
 	if err != nil {
-		return false, errors.New("瑙g爜澶辫触")
+		return -1, errors.New("瑙g爜澶辫触")
 	}
-	if deleteRes == -1 {
-		result = false
-	} else {
-		result = true
-	}
-	return result, nil
+	return deleteRes,nil
 }
 
 //缁欐墍鏈夎妭鐐硅拷鍔犲垹闄や换鍔′俊鎭�
@@ -1735,3 +1754,66 @@
 	}
 	return result, nil
 }
+
+type ShardInfo struct {
+	ShardIndex string `json:"shardIndex"` //鍒嗙墖鎵�灞炵储寮曞悕绉�
+	ShardNum   int    `json:"shardNum"`   //鍒嗙墖鍙�
+	ShardRole  string `json:"shardRole"`  //鍒嗙墖瑙掕壊(涓诲垎鐗囷細primary 鍓湰鍒嗙墖锛歳eplica)
+	ShardState string `json:"shardState"` //鍒嗙墖鐘舵��(鍚敤锛歋TARTED 鏈惎鐢細UNASSIGNED)
+	ShardDocs  int    `json:"shardDocs"`  //鍒嗙墖宸蹭繚瀛樻枃妗f暟
+	ShardStore string `json:"shardStore"` //鍒嗙墖褰撳墠瀛樺偍鏁版嵁澶у皬
+	ShardIp    string `json:"shardIp"`    //鍒嗙墖鎵�鍦ㄨ妭鐐筰p
+	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 := inx[3]
+			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