From ad9de83627775d4275c96a1ceb8518bccd36695c Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期二, 14 一月 2020 15:39:00 +0800 Subject: [PATCH] fix tools --- EsApi.go | 389 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 315 insertions(+), 74 deletions(-) diff --git a/EsApi.go b/EsApi.go index b216b6c..4a41462 100644 --- a/EsApi.go +++ b/EsApi.go @@ -72,12 +72,86 @@ if err != nil { return "", err } + feature := sources[0]["targetInfo"].([]interface{})[0].(map[string]interface{})["feature"].(string) return feature, nil } +//鏍规嵁鐩爣id鏌ヨ宸茶拷鍔犳潯鏁� +func GetLinkTagInfoSize(id string, indexName string, serverIp string, serverPort string) (size int, err error) { + url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search" + queryDSL := `{ + "query": { + "term":{ + "id":"` + id + `" + } + } + }` + buf, err := EsReq("POST", url, []byte(queryDSL)) + if err != nil { + return -1, err + } + source, err := Sourcelist(buf) + if err != nil { + return -1, err + } + if source[0]["linkTagInfo"] != nil { + size = len(source[0]["linkTagInfo"].([]interface{})) + } else { + return -1, errors.New("璇ユ暟缁勪笉瀛樺湪") + } + return size, nil +} + +//鏍规嵁鐩爣id杩藉姞璺熻釜淇℃伅 +func AppendTargetInfo(id string, targetInfo string, indexName string, serverIp string, serverPort string, updateTime string) (string, error) { + if targetInfo == "" { + return "", errors.New("append data is nil") + } + var info interface{} + url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_update_by_query?refresh=true" + jsonDSL := `{ + "query": { + "term":{ + "id":"` + id + `" + } + }, + "script": { + "lang": "painless", + "inline": "ctx._source.linkTagInfo.add(params.newparam);ctx._source.updateTime='` + updateTime + `'", + "params": { + "newparam": ` + targetInfo + ` + } + } +}` + fmt.Println(jsonDSL) + buf, err := EsReq("POST", url, []byte(jsonDSL)) + if err != nil { + return "", err + } + json.Unmarshal(buf, &info) + out, ok := info.(map[string]interface{}) + fmt.Println(out) + if !ok { + return "", errors.New("http response interface can not change map[string]interface{}") + } + middle, ok := out["updated"].(float64) + if !ok { + return "", errors.New("first updated change error!") + } + mes := "" + if middle == 1 { + mes = "杩藉姞鎴愬姛" + } + if middle == 0 { + mes = "宸茬粡杩藉姞" + } + return mes, nil + +} + //鏍规嵁鎶撴媿浜哄憳id鏇存柊锛坴ideourl锛夋憚鍍忔満鍦板潃 -func UpdateVideourlById(id string, videoUrl string, indexName string, serverIp string, serverPort string, command int) (statu int) { +func UpdateVideourlById(id string, videoUrl string, indexName string, serverIp string, serverPort string, command int) (statu int, err error) { var info interface{} url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_update_by_query?refresh=true" @@ -102,7 +176,7 @@ if err != nil { fmt.Println("http request videoUrlInfo info is err!") statu = 500 - return + return statu, err } json.Unmarshal(buf, &info) //fmt.Println(info) @@ -110,26 +184,26 @@ if !ok { fmt.Println("http response interface can not change map[string]interface{}") statu = 500 - return + return statu, errors.New("http response interface can not change map[string]interface{}") } middle, ok := out["updated"].(float64) if !ok { fmt.Println("first updated change error!") statu = 500 - return + return statu, errors.New("first updated change error!") } if middle == 1 { statu = 200 - return + return statu, nil } if middle == 0 { statu = 201 - return + return statu, errors.New("宸茬粡淇敼") } - return statu + return statu, nil } -//鑾峰彇褰撳墠鑺傜偣鎶撴媿搴撴墍鏈変汉鍛業D +//鑾峰彇褰撳墠鑺傜偣鎶撴媿搴撴墍鏈変汉鍛業D*缂撳瓨* func GetAllLocalVideopersonsId(compareArgs protomsg.CompareArgs, indexName string, serverIp string, serverPort string, alarmLevelTypes string) (capturetable []string) { queryStr := "" queryBody := compareArgs.InputValue @@ -175,7 +249,7 @@ //鍒ゆ柇甯冮槻绛夌骇 alarmLevelStr := "" if alarmLevelTypes != "" { - alarmLevelStr = "{\"terms\":{\"alarmRules.alarmLevel\":[\"" + alarmLevelTypes + "\"]}}," + alarmLevelStr = "{\"terms\":{\"alarmRules.alarmLevel.raw\":[\"" + alarmLevelTypes + "\"]}}," } //浣跨敤es搴曞眰鏈哄埗澶勭悊鍒嗛〉 @@ -294,34 +368,43 @@ } //鍒濆鍖栧疄鏃舵姄鎷� -func InitRealTimeCapture(serverIp string, serverPort string, indexName string, isAlarm bool, quantity int) ([]protomsg.AIOcean, error) { +func InitRealTimeCapture(serverIp string, serverPort string, indexName string, isAlarm string, category string, quantity int) ([]protomsg.AIOcean, error) { var aIOceanInfo []protomsg.AIOcean url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search" - queryStr := "" - if isAlarm == true { - queryStr = `"query":{ - "match_all":{} - },` - } else { - queryStr = `"query":{ + var filterArr []string + if isAlarm != "all" { + filterArr = append(filterArr, ` { + "term":{ + "isAlarm":"`+isAlarm+`" + } + }`) + } + + if category != "all" { + filterArr = append(filterArr, ` { + "term":{ + "targetInfo.targetType":"`+category+`" + } + }`) + + } + + queryStr := `"query":{ "bool":{ "filter":[ - { - "term":{ - "isAlarm":true - } - } + ` + strings.Join(filterArr, ",") + ` ] } },` - } + DSLJson := `{ "size":` + strconv.Itoa(quantity) + `, ` + queryStr + ` "sort":[{"picDate":{"order":"desc"}}], "_source": {"includes":[],"excludes":["*.feature"]} }` + fmt.Println(DSLJson) buf, err := EsReq("POST", url, []byte(DSLJson)) if err != nil { return aIOceanInfo, err @@ -342,18 +425,6 @@ var aIOceanInfo []protomsg.AIOcean url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search" - queryStr := "" - if isAlarm == true { - fmt.Println("continue") - } else { - queryStr = ` - { - "term":{ - "isAlarm":1 - } - } - ` - } DSLJson := `{ "size":20, "query":{ @@ -367,11 +438,15 @@ } } }, - ` + queryStr + ` + { + "term":{ + "isAlarm":` + strconv.FormatBool(isAlarm) + ` + } + } ] } }, - "_source": ["baseInfo", "alarmRules", "sex", "analyServerName", "sdkName", "ageDescription", "content", "id", "cameraAddr", "picMaxUrl", "picDate", "race", "videoUrl", "picSmUrl", "taskName", "personIsHub", "isAlarm", "analyServerIp", "cameraId", "isAckAlarm"] + "_source": {"includes":[],"excludes":["*.feature"]} }` buf, err := EsReq("POST", url, []byte(DSLJson)) @@ -390,25 +465,31 @@ } //缁煎悎缁熻 -func StatisticsComprehensive(serverIp string, serverPort string, indexName string, isAlarm bool) (total int, err error) { - isAlarmStr := "" - if isAlarm == true { - isAlarmStr = `,{"term":{"isAlarm":true}}` - } +func StatisticsComprehensive(serverIp string, serverPort string, indexName string, isAlarm string) (total int, err error) { url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search" + isAlarmStr := "" + if isAlarm != "all" { + isAlarmStr = ` { + "term":{ + "isAlarm":"` + isAlarm + `" + } + },` + + } DSLJson := `{ "size":0, "query":{ "bool":{ - "filter":[{ + "filter":[ + ` + isAlarmStr + ` + { "range":{ "picDate":{ "gte":"now+8h/d" } } } - ` + isAlarmStr + ` ] } } @@ -451,9 +532,9 @@ } }, "aggs":{ - "sdkId_status":{ + "sdkName_status":{ "terms":{ - "field":"taskId" + "field":"sdkName.raw" } } } @@ -472,7 +553,7 @@ if !ok { return nil, errors.New("first hits change error!") } - sdkName_status, ok := middle["sdkId_status"].(map[string]interface{}) + sdkName_status, ok := middle["sdkName_status"].(map[string]interface{}) if !ok { return nil, errors.New("first hits change error!") } @@ -484,9 +565,9 @@ fmt.Println("change to source error!") continue } - sdkId := tmpbuf["key"].(string) + sdkName := tmpbuf["key"].(string) count := int(tmpbuf["doc_count"].(float64)) - source["id"] = sdkId + source["name"] = sdkName source["value"] = count sources = append(sources, source) } @@ -580,23 +661,28 @@ } +//娣诲姞鍗冲皢鍒犻櫎淇″彿 +func AddDeleteSignal() { + +} + /****************************************浠ヤ笅涓簊dkCompare姣斿缂撳瓨浣跨敤鏂规硶*********************************************/ -//鑾峰彇鏌ヨ鎬绘暟 -func GetTotal(serverIp string, serverPort string, indexName string, shards string) (total int) { +//鑾峰彇鏌ヨ鎬绘暟 *缂撳瓨* +func GetTotal(serverIp string, serverPort string, indexName string, shards string, targetType string) (total int) { JsonDSL := `{ "size": 0, "query": { "bool": { "filter": [{ "term": { - "targetInfo.targetType.raw": "face" + "targetInfo.targetType.raw": "` + targetType + `" } }] } } }` - url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search" + url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search?preference=_shards:" + shards + "|_only_local" buf, err := EsReq("POST", url, []byte(JsonDSL)) if err != nil { return @@ -616,11 +702,17 @@ } -//鏌ヨ鏃堕棿娈垫暟鎹� -func GetPeriodInfos(serverIp string, serverPort string, startTime string, endTime string, indexName string, shards string) ([]*protomsg.Esinfo, error) { - var capdbinfo []*protomsg.Esinfo +//鏌ヨ鏃堕棿娈垫暟鎹� *缂撳瓨* +func GetPeriodInfos(serverIp string, serverPort string, startTime string, endTime string, indexName string, shards string, targetType string) ([]*protomsg.MultiFeaCache, error) { + var capdbinfo []*protomsg.MultiFeaCache url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search?preference=_shards:" + shards + "|_only_local" - + var source []string + switch targetType { + case "face": + source = []string{"id", "targetInfo.feature", "analyServerId", "cameraId"} + case "track": + source = []string{"id", "targetInfo.feature", "analyServerId", "cameraId", "targetInfo.attachTarget.feature", "targetInfo.targetLocation", "linkTagInfo.targetInfo.feature", "linkTagInfo.targetInfo.attachTarget.feature", "linkTagInfo.cameraId", "linkTagInfo.targetInfo.targetLocation"} + } JsonDSL := ` { "query": { @@ -628,7 +720,7 @@ "filter": [ { "term": { - "targetInfo.targetType.raw": "face" + "targetInfo.targetType.raw": "` + targetType + `" } }, { @@ -643,15 +735,12 @@ } }, "size": 1000000, - "_source": [ - "id", - "targetInfo.feature", - "analyServerId" - ] + "_source": ["` + strings.Replace(strings.Trim(fmt.Sprint(source), "[]"), " ", "\",\"", -1) + `"] } ` //logger.Debug(url) //logger.Debug(JsonDSL) + //fmt.Println(JsonDSL) buf, err := EsReq("POST", url, []byte(JsonDSL)) if err != nil { return capdbinfo, errors.New("http request dbtablename info is err!") @@ -662,19 +751,26 @@ if err != nil { return capdbinfo, err } - + //fmt.Println(sources) // 杩斿洖鎵�鏈夋煡璇㈢殑鏁版嵁 capdbinfos := Parsesources(sources) return capdbinfos, nil - } -// 鏌ヨ搴曞簱浜哄憳淇℃伅 -func GetOceanFeatures(serverIp string, serverPort string, queryIndexNum int, queryNums int, indexName string, shards string) ([]*protomsg.Esinfo, error) { - var dbinfos []*protomsg.Esinfo +// 鏌ヨ搴曞簱浜哄憳淇℃伅*缂撳瓨* +func GetOceanFeatures(serverIp string, serverPort string, queryIndexNum int, queryNums int, indexName string, shards string, targetType string) ([]*protomsg.MultiFeaCache, error) { + var dbinfos []*protomsg.MultiFeaCache point := strconv.Itoa(queryIndexNum) number := strconv.Itoa(queryNums) JsonDSL := "" + var source []string + switch targetType { + case "face": + source = []string{"id", "targetInfo.feature", "analyServerId"} + case "track": + source = []string{"id", "targetInfo.feature", "analyServerId", "targetInfo.attachTarget.feature", "targetInfo.targetLocation", "linkTagInfo.targetInfo.feature", "linkTagInfo.targetInfo.attachTarget.feature", "linkTagInfo.targetInfo.targetLocation"} + } + url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search?preference=_shards:" + shards + "|_only_local" JsonDSL = ` { "from": ` + point + `, @@ -683,18 +779,14 @@ "filter": [ { "term": { - "targetInfo.targetType.raw": "face" + "targetInfo.targetType.raw": "` + targetType + `" } } ] } }, "size":` + number + `, - "_source": [ - "id", - "targetInfo.feature", - "analyServerId" - ] + "_source": ["` + strings.Replace(strings.Trim(fmt.Sprint(source), "[]"), " ", "\",\"", -1) + `"] }` buf, err := EsReq("POST", url, []byte(JsonDSL)) @@ -712,3 +804,152 @@ dbpersoninfos := Parsesources(sources) return dbpersoninfos, nil } + +//************************CORN TASK******************************* +//鏌ヨ鏃ユ湡鑼冨洿鍐呮槸鍚﹁繕瀛樺湪鏁版嵁 +func QueryAnalyServerData(serverIp string, serverPort string, indexName string, startTime string, endTime string, analyServerId string) (result bool, err error) { + url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search" + deleteJson := `{ + "query":{ + "bool":{ + "filter":[{ + "range":{ + "updateTime":{ + "gte":"` + startTime + `", + "lte":"` + endTime + `" + } + } + }, + { + "term":{ + "analyServerId":"` + analyServerId + `" + } + } + ] + } + } +} ` + buf, err := EsReq("POST", url, []byte(deleteJson)) + if err != nil { + return false, errors.New("璇锋眰澶辫触") + } + resTotal, err := SourceTotal(buf) + if err != nil { + return false, errors.New("瑙g爜澶辫触") + } + if resTotal == -1 || resTotal == 0{ + result = false + } else { + result = true + } + return result, nil +} + + +//鎸夋棩鏈熻寖鍥达紝鏈嶅姟鍣↖d鍒犻櫎鏁版嵁 +func DeleteAnalyServerData(serverIp string, serverPort string, indexName string, startTime string, endTime string, analyServerId string) (result bool, err error) { + url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_delete_by_query" + deleteJson := `{ + "query":{ + "bool":{ + "filter":[{ + "range":{ + "updateTime":{ + "gte":"` + startTime + `", + "lte":"` + endTime + `" + } + } + }, + { + "term":{ + "analyServerId":"` + analyServerId + `" + } + } + ] + } + } +} ` + buf, err := EsReq("POST", url, []byte(deleteJson)) + if err != nil { + return false, errors.New("璇锋眰澶辫触") + } + deleteRes, err := SourceDeleted(buf) + if err != nil { + return false, errors.New("瑙g爜澶辫触") + } + if deleteRes == -1 { + result = false + } else { + result = true + } + return result, nil +} + +//缁欐墍鏈夎妭鐐硅拷鍔犲垹闄や换鍔′俊鎭� +func AddDelTask(serverIp string, serverPort string, indexName string, startTime string, endTime string, analyServerId string) (result bool, err error) { + url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_update_by_query" + addJson := `{ + "script": { + "lang":"painless", + "inline": "ctx._source.instantTask.add(params.newtask)", + "params": { + "newtask": { + "instantClearId": "` + analyServerId + `", + "startTime": "` + startTime + `", + "endTime": "` + endTime + `" + } + } + }, + "query": { + "match_all": {} + } +}` + buf, err := EsReq("POST", url, []byte(addJson)) + if err != nil { + return false, errors.New("璇锋眰澶辫触") + } + updateRes, err := SourceUpdated(buf) + if err != nil { + return false, errors.New("瑙g爜澶辫触") + } + if updateRes == -1 { + result = false + } else { + result = true + } + return result, nil +} + +//绉婚櫎宸叉墽琛屽畬鐨勫垹闄や换鍔� +func DeleteDelTask(serverIp string, serverPort string, indexName string, analyServerId string) (result bool, err error) { + url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_update_by_query" + deleteJson := `{ + "script": { + "lang":"painless", + "inline": "ctx._source.instantTask.remove(0)" + }, + "query": { + "bool": { + "filter":[{ + "term":{ + "id":"` + analyServerId + `" + } + }] + } + } +}` + buf, err := EsReq("POST", url, []byte(deleteJson)) + if err != nil { + return false, errors.New("璇锋眰澶辫触") + } + updateRes, err := SourceUpdated(buf) + if err != nil { + return false, errors.New("瑙g爜澶辫触") + } + if updateRes == -1 { + result = false + } else { + result = true + } + return result, nil +} -- Gitblit v1.8.0