From 171d94e0f254b485ed5d09cef9a208b0f5672048 Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期二, 08 九月 2020 14:01:26 +0800 Subject: [PATCH] fix source aggs --- EsApi.go | 201 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 190 insertions(+), 11 deletions(-) diff --git a/EsApi.go b/EsApi.go index 4849041..64235bf 100644 --- a/EsApi.go +++ b/EsApi.go @@ -180,7 +180,7 @@ /*******************sort []map util*******************/ //鏍规嵁鏃堕棿鑼冨洿鑱氬悎鎵�鏈夊尯鍩熶汉淇℃伅锛岃繑鍥炲浐瀹氭潯鏁� -func GetFaceDataByTimeAnd(startTime string, total int, thresholdTime int, thresholdStayTime int, serverIp string, serverPort string, indexName string) (resData []map[string]interface{}, err error) { +func GetFaceDataByTimeAndTotal(startTime string, endTime string, total int, thresholdTime int, thresholdStayTime int, serverIp string, serverPort string, indexName string) (resData []map[string]interface{}, err error) { var requestUrl = "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search" var requestBody = `{ "query": { @@ -189,7 +189,8 @@ { "range": { "picDate": { - "gte": "` + startTime + `" + "gte": "` + startTime + `", + "lte": "` + endTime + `" } } }, @@ -256,25 +257,124 @@ if err != nil { return nil, err } - fmt.Println(len(source)) + if len(source) == 0{ + return source,nil + } faceSource := make([]map[string]interface{}, 0) for index, info := range source { if int(info["stayTime"].(float64)) > thresholdStayTime { faceSource = append(faceSource, source[index]) } } - //fmt.Println(len(source)) + mapsSort := MapsSort{} + mapsSort.Key = "endTime" + mapsSort.MapList = faceSource + sort.Sort(&mapsSort) if len(faceSource) > total { - mapsSort := MapsSort{} - mapsSort.Key = "endTime" - mapsSort.MapList = faceSource - sort.Sort(&mapsSort) return mapsSort.MapList[:total], nil } - return faceSource, nil + return mapsSort.MapList, nil } -func GetFaceIdDeduplication(startTime string, endTime string, serverIp string, serverPort string, indexName string) (ids []string, err error) { +func GetFaceDataByTimeAndId(startTime string, endTime string, id string, thresholdTime int, thresholdStayTime int, serverIp string, serverPort string, indexName string) (resData []map[string]interface{}, err error) { + var requestUrl = "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search" + var requestBody = `{ + "query": { + "bool": { + "filter": [ + { + "range": { + "picDate": { + "gte": "` + startTime + `", + "lte": "` + endTime + `" + } + } + }, + { + "term":{ + "targetInfo.targetType.raw": "FaceDetect" + } + }, + { + "term":{ + "baseInfo.targetId": "` + id + `" + } + } + ] + } + }, + "size": 0, + "aggs": { + "buckets_aggs": { + "composite": { + "sources": [ + { + "faceId": { + "terms": { + "field": "baseInfo.targetId" + } + } + }, + { + "areaId": { + "terms": { + "field": "targetInfo.areaId" + } + } + } + ], + "size": 10000000 + }, + "aggs": { + "top_attention_hits": { + "top_hits": { + "size": 1000000, + "sort": [ + { + "picDate": { + "order": "asc" + } + } + ], + "_source": { + "includes": [ + "baseInfo.targetId", + "targetInfo.picSmUrl", + "targetInfo.areaId", + "picDate" + ] + } + } + } + } + } + } +}` + buf, err := EsReq("POST", requestUrl, []byte(requestBody)) + if err != nil { + return nil, err + } + source, err := FaceSourceAggregations(buf, thresholdTime, thresholdStayTime) + if err != nil { + return nil, err + } + if len(source) == 0{ + return source,nil + } + faceSource := make([]map[string]interface{}, 0) + for index, info := range source { + if int(info["stayTime"].(float64)) > thresholdStayTime { + faceSource = append(faceSource, source[index]) + } + } + mapsSort := MapsSort{} + mapsSort.Key = "startTime" + mapsSort.MapList = faceSource + sort.Sort(&mapsSort) + return mapsSort.MapList, nil +} + +func GetFaceIdDeduplication(startTime string, endTime string, serverIp string, serverPort string, indexName string) (ids []map[string]interface{}, err error) { var requestUrl = "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search" var requestBody = `{ "query": { @@ -310,7 +410,27 @@ } ], "size": 10000000 - } + }, + "aggs": { + "top_attention_hits": { + "top_hits": { + "size": 1, + "sort": [ + { + "picDate": { + "order": "desc" + } + } + ], + "_source": { + "includes": [ + "picDate" + ] + } + } + } + } + } } } }` @@ -324,9 +444,68 @@ if err1 != nil { return nil, err1 } + if len(ids) > 1 { + mapsSort := MapsSort{} + mapsSort.Key = "lastTime" + mapsSort.MapList = ids + sort.Sort(&mapsSort) + return mapsSort.MapList, nil + } return ids, nil } +//缁熻鍚勪釜鍖哄煙浜烘暟 +func StatisticsEveryAreaPersonsNumber(startTime string, endTime string, serverIp string, serverPort string, indexName string) ([]map[string]interface{}, error) { + var requestUrl = "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search" + var requestBody = `{ + "query": { + "bool": { + "filter": [ + { + "range": { + "picDate": { + "gte": "` + startTime + `", + "lte": "` + endTime + `" + } + } + }, + { + "term": { + "targetInfo.targetType.raw": "Yolo" + } + } + ] + } + }, + "size": 0, + "aggs": { + "buckets_aggs": { + "composite": { + "sources": [ + { + "areaId": { + "terms": { + "field": "targetInfo.areaId" + } + } + } + ], + "size": 10000000 + } + } + } +}` + buf, err := EsReq("POST", requestUrl, []byte(requestBody)) + if err != nil { + return nil, err + } + result, err := SourceStatistics(buf) + if err != nil { + return nil, err + } + return result, nil +} + /**************************************customer analysis util end**************************************/ //鏍规嵁鎽勫儚鏈哄垪琛ㄥ拰鏃堕棿鏌ヨ浜哄憳娴忚杞ㄨ抗 func GetPersonDataByCameraIdAndTime(cameraId []string, startTime string, endTime string, serverIp string, serverPort string, indexName string) (map[string]interface{}, error) { -- Gitblit v1.8.0