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