From 66d9e889d745b573ad8d67ac39e1d05335424f5c Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期四, 20 八月 2020 19:41:17 +0800 Subject: [PATCH] add buckets --- EsClient.go | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 102 insertions(+), 0 deletions(-) diff --git a/EsClient.go b/EsClient.go index 39754cf..4b58c98 100644 --- a/EsClient.go +++ b/EsClient.go @@ -8,6 +8,7 @@ "fmt" "io" "io/ioutil" + "math" "net/http" "strings" "time" @@ -475,6 +476,107 @@ return tmpinfos } +func SourceAggregations(buf [] byte) (sources map[string]interface{}, err error) { + s := make(map[string]interface{}) + loc, err := time.LoadLocation("Asia/Shanghai") + if err != nil { + return nil, errors.New("鏃跺尯璁剧疆閿欒") + } + var info interface{} + json.Unmarshal(buf, &info) + out, ok := info.(map[string]interface{}) + if !ok { + return nil, errors.New("http response interface can not change map[string]interface{}") + } + middle, ok := out["aggregations"].(map[string]interface{}) + if !ok { + return nil, errors.New("first hits change error!") + } + bucketsAggs := middle["buckets_aggs"].(map[string]interface{}) + buckets := bucketsAggs["buckets"].([]interface{}) + if len(buckets) == 0 { + return nil, nil + } + allSource := make([]map[string]interface{},0) + for _, inf := range buckets { + //tmpSources := make(map[string]interface{}, 0) + hitsSources := make([]map[string]interface{}, 0) + //groupKey := inf.(map[string]interface{})["key"].(map[string]interface{}) + //docCount := int(inf.(map[string]interface{})["doc_count"].(float64)) + topAttentionHits := inf.(map[string]interface{})["top_attention_hits"].(map[string]interface{}) + middleHits := topAttentionHits["hits"].(map[string]interface{}) + finalHits := middleHits["hits"].([]interface{}) + tmpHitSource := make(map[string]interface{}) + startTime := "" + for _, in := range finalHits { + tmpbuf, ok := in.(map[string]interface{}) + if !ok { + fmt.Println("change to source error!") + continue + } + source, ok := tmpbuf["_source"].(map[string]interface{}) + if !ok { + fmt.Println("change _source error!") + continue + } + baseInfo := source["baseInfo"].([]interface{})[0].(map[string]interface{}) + targetInfo := source["targetInfo"].([]interface{})[0].(map[string]interface{}) + tmpTime := source["picDate"].(string) + mTime, err := time.ParseInLocation("2006-01-02 15:04:05", tmpTime, loc) + if err != nil { + return nil, errors.New("鏃堕棿瑙f瀽閿欒") + } + + sTime := tmpTime + eTime := tmpTime + if startTime != "" { + sinTime, _ := time.ParseInLocation("2006-01-02 15:04:05", startTime, loc) + if math.Abs(sinTime.Sub(mTime).Seconds()) <= 20 { + startTime = tmpTime + hitsSources[len(hitsSources)-1]["endTime"] = tmpTime + continue + } else { + if sinTime.Sub(mTime).Seconds() == 0{ + sinTime.Add(time.Second*1) + sinTime.Format("2006-01-02 15:04:05") + hitsSources[len(hitsSources)-1]["endTime"] = sinTime + } + } + } + startTime = tmpTime + tmpHitSource["personId"] = baseInfo["targetId"].(string) + tmpHitSource["cameraId"] = source["cameraId"].(string) + tmpHitSource["cameraName"] = source["cameraName"].(string) + tmpHitSource["cameraAddr"] = source["cameraAddr"].(string) + tmpHitSource["targetScore"] = int(targetInfo["targetScore"].(float64)) + tmpHitSource["properties"] = source["showLabels"].(string) + tmpHitSource["tableId"] = baseInfo["tableId"].(string) + tmpHitSource["tableName"] = baseInfo["tableName"].(string) + tmpHitSource["bwType"] = baseInfo["bwType"].(string) + tmpHitSource["personName"] = baseInfo["targetName"].(string) + tmpHitSource["compareScore"] = int(baseInfo["compareScore"].(float64)) + tmpHitSource["startTime"] = sTime + tmpHitSource["startBackGroundPicUrl"] = source["picMaxUrl"].([]interface{}) + tmpHitSource["startFacePicUrl"] = targetInfo["picSmUrl"].(string) + tmpHitSource["endTime"] = eTime + tmpHitSource["endTBackGroundPicUrl"] = source["picMaxUrl"].([]interface{}) + tmpHitSource["endTFacePicUrl"] = targetInfo["picSmUrl"].(string) + hitsSources = append(hitsSources, tmpHitSource) + } + allSource = append(allSource,hitsSources...) + // tmpSources["groupKey"] = groupKey + // tmpSources["doc_count"] = docCount + // tmpSources["hits_sources"] = hitsSources + // sources = append(sources, tmpSources) + } + count := len(allSource) + fmt.Println(count) + s["count"] = count + s["allSource"] = allSource + + return s, nil +} + func Sourcelist(buf []byte) (sources []map[string]interface{}, err error) { var info interface{} json.Unmarshal(buf, &info) -- Gitblit v1.8.0