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