From fc21cb1a45c5ca831a2221752da9891cf0291395 Mon Sep 17 00:00:00 2001
From: sunty <1172534965@qq.com>
Date: 星期二, 22 十月 2019 10:27:54 +0800
Subject: [PATCH] aggs task info

---
 EsApi.go |   70 +++++++++++++++++++++++++++++++++++
 1 files changed, 70 insertions(+), 0 deletions(-)

diff --git a/EsApi.go b/EsApi.go
index 150aa50..48b3ab9 100644
--- a/EsApi.go
+++ b/EsApi.go
@@ -688,3 +688,73 @@
 	//fmt.Println("tmpSource",sources)
 	return sources,nil
 }
+
+//鑱氬悎浠诲姟鍒楄〃锛宼askId+taskName
+func AggregateTaskList(serverIp string, serverPort string, indexName string) (sources []map[string]interface{},err error){
+	url := "http://" + serverIp + ":" + serverPort +
+		"/"+indexName+"/_search"
+	DSLJson := `{
+    "size": 0,
+    "aggs": {
+        "task_status": {
+            "composite": {
+                "sources": [
+                    {
+                        "taskId": {
+                            "terms": {
+                                "field": "taskId"
+                            }
+                        }
+                    },
+                    {
+                        "taskName": {
+                            "terms": {
+                                "field": "taskName.raw"
+                            }
+                        }
+                    }
+                ],
+                "size":"1000"
+            }
+        }
+    }
+}`
+	buf, err := EsReq("POST",url,[]byte(DSLJson))
+	if err != nil {
+		return nil, err
+	}
+	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!")
+	}
+	task_status, ok := middle["task_status"].(map[string]interface{})
+	if !ok {
+		return nil, errors.New("first hits change error!")
+	}
+
+	for _, in := range task_status["buckets"].([]interface{}){
+		var source = make(map[string]interface{},0)
+		tmpbuf, ok := in.(map[string]interface{})
+		if !ok {
+			fmt.Println("change to source error!")
+			continue
+		}
+		task := tmpbuf["key"].(map[string]interface{})
+		count := int(tmpbuf["doc_count"].(float64))
+		taskName := task["taskName"].(string)
+		taskId := task["taskId"].(string)
+		source["taskName"] = taskName
+		source["taskId"] = taskId
+		source["count"] = count
+		sources = append(sources, source)
+	}
+	//fmt.Println("tmpSource",sources)
+	return sources,nil
+
+}

--
Gitblit v1.8.0