From b0c5bb2548858668cb8cf191d6ee8e0159d272d9 Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期三, 02 九月 2020 10:39:19 +0800 Subject: [PATCH] add group outside sort --- EsClient.go | 12 +++++++++--- EsApi.go | 31 +++++++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/EsApi.go b/EsApi.go index 73ee338..2eb29eb 100644 --- a/EsApi.go +++ b/EsApi.go @@ -364,7 +364,7 @@ return faceSource, nil } -func GetFaceIdDeduplication(startTime string, endTime string, serverIp string, serverPort string, indexName string) (ids []string, err error) { +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": { @@ -400,7 +400,27 @@ } ], "size": 10000000 - } + }, + "aggs": { + "top_attention_hits": { + "top_hits": { + "size": 1, + "sort": [ + { + "picDate": { + "order": "desc" + } + } + ], + "_source": { + "includes": [ + "picDate" + ] + } + } + } + } + } } } }` @@ -414,6 +434,13 @@ if err1 != nil { return nil, err1 } + if len(ids) > 0 { + mapsSort := MapsSort{} + mapsSort.Key = "lastTime" + mapsSort.MapList = ids + sort.Sort(&mapsSort) + return mapsSort.MapList, nil + } return ids, nil } diff --git a/EsClient.go b/EsClient.go index 70c3073..3e6fd24 100644 --- a/EsClient.go +++ b/EsClient.go @@ -582,7 +582,7 @@ return allSource, nil } -func SourceDeduplication(buf [] byte) ([]string,error) { +func SourceDeduplication(buf [] byte) ([]map[string]interface{},error) { var info interface{} json.Unmarshal(buf, &info) out, ok := info.(map[string]interface{}) @@ -598,9 +598,15 @@ if len(buckets) == 0 { return nil, nil } - faceId := make([]string,0) + faceId := make([]map[string]interface{},0) for _, in := range buckets { - faceId = append(faceId, in.(map[string]interface{})["key"].(map[string]interface{})["faceId"].(string)) + tmpInfo := make(map[string]interface{}) + topAttentionHits := in.(map[string]interface{})["top_attention_hits"].(map[string]interface{}) + middleHits := topAttentionHits["hits"].(map[string]interface{}) + finalHits := middleHits["hits"].([]interface{}) + tmpInfo["faceId"] = in.(map[string]interface{})["key"].(map[string]interface{})["faceId"].(string) + tmpInfo["lastTime"] = finalHits[0].(map[string]interface{})["_source"].(map[string]interface{})["picDate"].(string) + faceId = append(faceId, tmpInfo) } return faceId,nil } -- Gitblit v1.8.0