From a46931eb698575476d15f0af5cae4ebe7edc45a3 Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期一, 24 八月 2020 18:10:04 +0800 Subject: [PATCH] add auto param --- EsApi.go | 311 +++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 262 insertions(+), 49 deletions(-) diff --git a/EsApi.go b/EsApi.go index 5b68d94..13a40b5 100644 --- a/EsApi.go +++ b/EsApi.go @@ -159,32 +159,121 @@ } -//鏍规嵁鏃堕棿鑼冨洿锛屾憚鍍忔満鍒楄〃锛屽垎缁勮仛鍚堜汉鑴稿垪琛� -func GetfaceDataBucketsBycameraIdAndTime(cameraId []string, startTime string, endTime string, serverIp string, ServerPort string, indexName string) (buckersDate map[string]interface{},err error){ - esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1) +//鏍规嵁鎽勫儚鏈哄垪琛ㄥ拰鏃堕棿鏌ヨ浜哄憳娴忚杞ㄨ抗 +func GetPersonDataByCameraIdAndTime(cameraId []string, startTime string, endTime string, serverIp string, ServerPort string, indexName string) (map[string]interface{}, error) { + + var filterArr []string + if cameraId != nil && len(cameraId) > 0{ + esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1) + filterArr = append(filterArr, `{ + { + "terms": { + "cameraId": ["`+esCameraId+`"] + } + }`) + } + filterArr = append(filterArr, `{ + "range": { + "picDate": { + "gte": "`+startTime+`", + "lte": "`+endTime+`" + } + } + }`) + filterArr = append(filterArr, ` { + "term": { + "targetInfo.targetType.raw": "Yolo" + } + }`) + queryStr := strings.Join(filterArr, ",") + + personUrl := "http://" + serverIp + ":" + ServerPort + "/" + indexName + "/_search" + personBody := `{ + "query": { + "bool": { + "filter": [ + ` + queryStr + ` + ] + } + }, + "size": 2147483647, + "_source": { + "includes": [ + "cameraId", + "cameraName", + "cameraAddr", + "targetInfo.targetScore", + "picDate", + "updateTime", + "picMaxUrl", + "targetInfo.belongsTargetId", + "targetInfo.targetLocation", + "picWH.picW" + ] + } +}` + //fmt.Println(personUrl) + //fmt.Println(personBody) + source := make(map[string]interface{}) + queryStartTime := time.Now() + buf, err := EsReq("POST", personUrl, []byte(personBody)) + if err != nil { + return nil, err + } + queryUseTime := time.Now().Sub(queryStartTime).Seconds() * 1000 + sources, err := Sourcelist(buf) + if err != nil { + return nil, err + } + resData, err := PerSonAnalysis(sources) + source["result"] = resData + source["total"] = len(resData) + source["queryUseTime"] = queryUseTime + //println(sources) + return source, nil + +} + +//鏍规嵁鏃堕棿鑼冨洿锛屾憚鍍忔満鍒楄〃锛屽垎缁勮仛鍚堜汉鑴稿垪琛�,杩斿洖鍒嗙粍鏁版嵁 +func GetFaceDataBucketsByCameraIdAndTimeReturnByGrouped(cameraId []string, personId []string, startTime string, endTime string, thresholdTime float64, serverIp string, ServerPort string, indexName string) (buckersDate map[string]interface{}, err error) { + var filterArr []string + if cameraId != nil && len(cameraId) > 0{ + esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1) + filterArr = append(filterArr, `{ + "terms": { + "cameraId": ["`+esCameraId+`"] + } + }`) + } + if personId != nil &&len(personId) > 0{ + esPersonId := strings.Replace(strings.Trim(fmt.Sprint(personId), "[]"), " ", "\",\"", -1) + filterArr = append(filterArr, `{ + "terms": { + "baseInfo.targetId": ["`+esPersonId+`"] + } + }`) + } + filterArr = append(filterArr, `{ + "range": { + "picDate": { + "gte": "`+startTime+`", + "lte": "`+endTime+`" + } + } + }`) + filterArr = append(filterArr, ` { + "term": { + "targetInfo.targetType.raw": "FaceDetect" + } + }`) + queryStr := strings.Join(filterArr, ",") + var buckersUrl = "http://" + serverIp + ":" + ServerPort + "/" + indexName + "/_search" var buckersBody = `{ "query": { "bool": { "filter": [ - { - "range": { - "picDate": { - "gte": "` + startTime + `", - "lte": "` + endTime + `" - } - } - }, - { - "term": { - "targetInfo.targetType.raw": "FaceDetect" - } - }, - { - "terms": { - "cameraId": ["` + esCameraId + `"] - } - } + ` + queryStr + ` ] } }, @@ -207,12 +296,13 @@ } } } - ] + ], + "size": 100000000 }, "aggs":{ "top_attention_hits":{ "top_hits":{ - "size": 100, + "size": 1000000, "sort": [ { "picDate": { @@ -221,7 +311,7 @@ } ], "_source":{ - "includes":["baseInfo.targetId","cameraId","cameraName","cameraAddr","targetInfo.targetScore","targetInfo.picSmUrl","showLabels","baseInfo.tableId","baseInfo.tableName","baseInfo.bwType","baseInfo.targetName","baseInfo.compareScore","picDate","picMaxUrl"] + "includes":["baseInfo.targetId","cameraId","cameraName","cameraAddr","targetInfo.targetScore","targetInfo.picSmUrl","showLabels","baseInfo.tableId","baseInfo.tableName","baseInfo.bwType","baseInfo.targetName","baseInfo.compareScore","picDate","picMaxUrl","picWH"] } } } @@ -229,67 +319,190 @@ } } }` + //fmt.Println(buckersUrl) + //fmt.Println(buckersBody) + sources := make(map[string]interface{}) + queryStartTime := time.Now() buf, err := EsReq("POST", buckersUrl, []byte(buckersBody)) if err != nil { return nil, err } - - sources, err := SourceAggregations(buf) + queryUseTime := time.Now().Sub(queryStartTime).Seconds() * 1000 + //fmt.Println(queryUseTime) + tmpSources, err := SourceAggregationsReturnByGrouped(buf, thresholdTime) if err != nil { return nil, err } + sources["result"] = tmpSources + sources["total"] = len(tmpSources) + sources["queryUseTime"] = queryUseTime //println(sources) - return sources,nil + return sources, nil } -//鏍规嵁鎶撴媿浜哄憳id鏇存柊锛坧icurl锛夊浘鐗囧湴鍧�---棰勫紑鍙� -func UpdatePicUrlById(id string, picurl string, indexName string, serverIp string, serverPort string) (statu int, err error) { +//鏍规嵁鏃堕棿鑼冨洿锛屾憚鍍忔満鍒楄〃锛屽垎缁勮仛鍚堜汉鑴稿垪琛� +func GetFaceDataBucketsByCameraIdAndTime(cameraId []string, personId []string, startTime string, endTime string, thresholdTime float64, serverIp string, ServerPort string, indexName string) (buckersDate map[string]interface{}, err error) { + var filterArr []string + if cameraId != nil && len(cameraId) > 0{ + esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1) + filterArr = append(filterArr, `{ + "terms": { + "cameraId": ["`+esCameraId+`"] + } + }`) + } + if personId != nil &&len(personId) > 0{ + esPersonId := strings.Replace(strings.Trim(fmt.Sprint(personId), "[]"), " ", "\",\"", -1) + filterArr = append(filterArr, `{ + "terms": { + "baseInfo.targetId": ["`+esPersonId+`"] + } + }`) + } + filterArr = append(filterArr, `{ + "range": { + "picDate": { + "gte": "`+startTime+`", + "lte": "`+endTime+`" + } + } + }`) + filterArr = append(filterArr, ` { + "term": { + "targetInfo.targetType.raw": "FaceDetect" + } + }`) + queryStr := strings.Join(filterArr, ",") + var buckersUrl = "http://" + serverIp + ":" + ServerPort + "/" + indexName + "/_search" + var buckersBody = `{ + "query": { + "bool": { + "filter": [ + ` + queryStr + ` + ] + } + }, + "size": 0, + "aggs": { + "buckets_aggs": { + "composite": { + "sources": [ + { + "baseInfo.targetId": { + "terms": { + "field": "baseInfo.targetId" + } + } + }, + { + "cameraId": { + "terms": { + "field": "cameraId" + } + } + } + ], + "size": 100000000 + }, + "aggs":{ + "top_attention_hits":{ + "top_hits":{ + "size": 1000000, + "sort": [ + { + "picDate": { + "order": "asc" + } + } + ], + "_source":{ + "includes":["baseInfo.targetId","cameraId","cameraName","cameraAddr","targetInfo.targetScore","targetInfo.picSmUrl","showLabels","baseInfo.tableId","baseInfo.tableName","baseInfo.bwType","baseInfo.targetName","baseInfo.compareScore","picDate","picMaxUrl","picWH"] + } + } + } + } + } + } +}` + //fmt.Println(buckersUrl) + //fmt.Println(buckersBody) + queryStartTime := time.Now() + buf, err := EsReq("POST", buckersUrl, []byte(buckersBody)) + if err != nil { + return nil, err + } + queryUseTime := time.Now().Sub(queryStartTime).Seconds() * 1000 + + sources, err := SourceAggregations(buf, thresholdTime, queryUseTime) + if err != nil { + return nil, err + } + return sources, nil +} + +//鏍规嵁鎶撴媿浜哄憳id鏇存柊锛坧icurl锛夊浘鐗囧湴鍧� +func UpdatePicUrlById(id string, picUrl string, indexName string, serverIp string, serverPort string) (err error) { + updateTime := time.Now().Format("2006-01-02 15:04:05") + tRes, err := AIOceaninfosbyid([]string{id}, indexName, serverIp, serverPort) + if err != nil || len(tRes) == 0 { + return err + } + picMaxUrls := tRes[0].PicMaxUrl + sourceStr := ` + "lang":"painless", + "inline": "ctx._source.picMaxUrl.add('` + picUrl + `');ctx._source.updateTime='` + updateTime + `'" +` + if len(picMaxUrls) >= 2 { + sourceStr = `"source": "ctx._source.picMaxUrl[1]='` + picUrl + `';ctx._source.updateTime='` + updateTime + `'"` + } var info interface{} url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_update_by_query?refresh=true" - sourceStr := "ctx._source.videoUrl='" + picurl + "'" - var videoUrlInfo = ` + + var picUrlInfo = ` { "script": { - "source": "` + sourceStr + `" + ` + sourceStr + ` }, - "query": { - "term": { - "id": "` + id + `" - } - } + "query": { + "bool": { + "filter": [ + { + "term": { + "id": "` + id + `" + } + } + ] + } + } } ` //logPrint("url: ", url, videoUrlInfo) - buf, err := EsReq("POST", url, []byte(videoUrlInfo)) + fmt.Println(url, picUrlInfo) + buf, err := EsReq("POST", url, []byte(picUrlInfo)) if err != nil { logPrint("http request videoUrlInfo info is err!") - statu = 500 - return statu, err + return err } json.Unmarshal(buf, &info) //logPrint(info) out, ok := info.(map[string]interface{}) if !ok { logPrint("http response interface can not change map[string]interface{}") - statu = 500 - return statu, errors.New("http response interface can not change map[string]interface{}") + return errors.New("http response interface can not change map[string]interface{}") } middle, ok := out["updated"].(float64) if !ok { logPrint("first updated change error!") - statu = 500 - return statu, errors.New("first updated change error!") + return errors.New("first updated change error!") } if middle == 1 { - statu = 200 - return statu, nil + return nil } if middle == 0 { - statu = 201 - return statu, errors.New("宸茬粡淇敼") + return errors.New("宸茬粡淇敼") } - return statu, nil + return nil } //鏍规嵁鎶撴媿浜哄憳id鏇存柊锛坴ideourl锛夋憚鍍忔満鍦板潃 -- Gitblit v1.8.0