EsClient.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
EsClient_test.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
EsClient.go
@@ -540,24 +540,27 @@ realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) stayTime = math.Abs(mTime.Sub(realStartTime).Seconds()) hitsSources[len(hitsSources)-1]["stayTime"] = stayTime hitsSources[len(hitsSources)-1]["endTime"] = tmpTime startTime = "" } else { startTime = tmpTime hitsSources[len(hitsSources)-1]["endTime"] = tmpTime continue } continue } else { hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) hitEndTime := hitsSources[len(hitsSources)-1]["endTime"].(string) realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) realEndTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitEndTime, loc) stayTime = math.Abs(realEndTime.Sub(realStartTime).Seconds()) if sinTime.Sub(mTime).Seconds() == 0 { if sinTime.Sub(mTime).Seconds() == 0{ sinTime.Add(time.Second * 1) sinTime.Format("2006-01-02 15:04:05") hitsSources[len(hitsSources)-1]["endTime"] = tmpTime stayTime = 1 } else if stayTime == 0{ stayTime = 1 hitsSources[len(hitsSources)-1]["endTime"] = realEndTime.Add(time.Second*1).Format("2006-01-02 15:04:05") } hitsSources[len(hitsSources)-1]["stayTime"] = stayTime if point == indexLength { @@ -708,24 +711,27 @@ realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) stayTime = math.Abs(mTime.Sub(realStartTime).Seconds()) hitsSources[len(hitsSources)-1]["stayTime"] = stayTime hitsSources[len(hitsSources)-1]["endTime"] = tmpTime startTime = "" } else { startTime = tmpTime hitsSources[len(hitsSources)-1]["endTime"] = tmpTime continue } continue } else { hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) hitEndTime := hitsSources[len(hitsSources)-1]["endTime"].(string) realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) realEndTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitEndTime, loc) stayTime = math.Abs(realEndTime.Sub(realStartTime).Seconds()) if sinTime.Sub(mTime).Seconds() == 0 { if sinTime.Sub(mTime).Seconds() == 0{ sinTime.Add(time.Second * 1) sinTime.Format("2006-01-02 15:04:05") hitsSources[len(hitsSources)-1]["endTime"] = tmpTime stayTime = 1 } else if stayTime == 0{ stayTime = 1 hitsSources[len(hitsSources)-1]["endTime"] = realEndTime.Add(time.Second*1).Format("2006-01-02 15:04:05") } hitsSources[len(hitsSources)-1]["stayTime"] = stayTime if point == indexLength { @@ -835,24 +841,27 @@ realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) stayTime = math.Abs(mTime.Sub(realStartTime).Seconds()) hitsSources[len(hitsSources)-1]["stayTime"] = stayTime hitsSources[len(hitsSources)-1]["endTime"] = tmpTime startTime = "" } else { startTime = tmpTime hitsSources[len(hitsSources)-1]["endTime"] = tmpTime continue } continue } else { hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) hitEndTime := hitsSources[len(hitsSources)-1]["endTime"].(string) realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) realEndTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitEndTime, loc) stayTime = math.Abs(realEndTime.Sub(realStartTime).Seconds()) if sinTime.Sub(mTime).Seconds() == 0 { if sinTime.Sub(mTime).Seconds() == 0{ sinTime.Add(time.Second * 1) sinTime.Format("2006-01-02 15:04:05") hitsSources[len(hitsSources)-1]["endTime"] = tmpTime stayTime = 1 } else if stayTime == 0{ stayTime = 1 hitsSources[len(hitsSources)-1]["endTime"] = realEndTime.Add(time.Second*1).Format("2006-01-02 15:04:05") } hitsSources[len(hitsSources)-1]["stayTime"] = stayTime if point == indexLength { EsClient_test.go
@@ -1,9 +1,11 @@ package esutil import( "testing" "math" "testing" "fmt" "encoding/json" "time" ) func TestEsReq(t *testing.T){ @@ -28,3 +30,110 @@ } fmt.Println(dbinfos) } func FaceSourceAggregations(buf []byte, thresholdTime int, thresholdStayTime int) (sources []map[string]interface{}, err error) { 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 { hitsSources := make([]map[string]interface{}, 0) topAttentionHits := inf.(map[string]interface{})["top_attention_hits"].(map[string]interface{}) middleHits := topAttentionHits["hits"].(map[string]interface{}) finalHits := middleHits["hits"].([]interface{}) startTime := "" indexLength := len(finalHits) point := 0 for _, in := range finalHits { point = point + 1 tmpHitSource := make(map[string]interface{}) 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("时间解析错误") } sTime := tmpTime eTime := mTime.Add(time.Second * 1).Format("2006-01-02 15:04:05") stayTime := 1.0 if startTime != "" && point <= indexLength { sinTime, _ := time.ParseInLocation("2006-01-02 15:04:05", startTime, loc) passTime := math.Abs(mTime.Sub(sinTime).Seconds()) hitsSources[len(hitsSources)-1]["stayTime"] = stayTime //fmt.Println("passTime: ", passTime) if int(passTime) <= thresholdTime { if point == indexLength { hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) stayTime = math.Abs(mTime.Sub(realStartTime).Seconds()) hitsSources[len(hitsSources)-1]["stayTime"] = stayTime startTime = "" } else { startTime = tmpTime hitsSources[len(hitsSources)-1]["endTime"] = tmpTime continue } } else { hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) hitEndTime := hitsSources[len(hitsSources)-1]["endTime"].(string) realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) realEndTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitEndTime, loc) stayTime = math.Abs(realEndTime.Sub(realStartTime).Seconds()) if sinTime.Sub(mTime).Seconds() == 0 { sinTime.Add(time.Second * 1) sinTime.Format("2006-01-02 15:04:05") hitsSources[len(hitsSources)-1]["endTime"] = tmpTime stayTime = 1 } hitsSources[len(hitsSources)-1]["stayTime"] = stayTime if point == indexLength { stayTime = 1 } startTime = "" } } //fmt.Println("========================================================") startTime = tmpTime tmpHitSource["faceId"] = baseInfo["targetId"].(string) if targetInfo["areaId"] == nil { continue } tmpHitSource["areaId"] = targetInfo["areaId"].(string) tmpHitSource["startTime"] = sTime tmpHitSource["faceImg"] = targetInfo["picSmUrl"].(string) tmpHitSource["endTime"] = eTime tmpHitSource["stayTime"] = stayTime hitsSources = append(hitsSources, tmpHitSource) } allSource = append(allSource, hitsSources...) } return allSource, nil }