From 1eafa93c47f3f498243a2a90176aae3fcbd902b2 Mon Sep 17 00:00:00 2001 From: liugq Date: Thu, 5 May 2022 10:45:57 +0800 Subject: [PATCH] sort search alert --- plugin/api/alerting/alert.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/plugin/api/alerting/alert.go b/plugin/api/alerting/alert.go index 3c3edb2c..931f5a08 100644 --- a/plugin/api/alerting/alert.go +++ b/plugin/api/alerting/alert.go @@ -86,13 +86,23 @@ func (h *AlertAPI) searchAlert(w http.ResponseWriter, req *http.Request, ps http var ( keyword = h.GetParameterOrDefault(req, "keyword", "") - queryDSL = `{"sort":[{"created":{ "order": "desc"}}],"query":{"bool":{"must":[%s]}}, "size": %d, "from": %d}` + queryDSL = `{"sort":[%s],"query":{"bool":{"must":[%s]}}, "size": %d, "from": %d}` strSize = h.GetParameterOrDefault(req, "size", "20") strFrom = h.GetParameterOrDefault(req, "from", "0") state = h.GetParameterOrDefault(req, "state", "") severity = h.GetParameterOrDefault(req, "severity", "") + sort = h.GetParameterOrDefault(req, "sort", "") mustBuilder = &strings.Builder{} + sortBuilder = strings.Builder{} ) + + if sort != "" { + sortParts := strings.Split(sort, ",") + if len(sortParts) == 2 && sortParts[1] != "created" { + sortBuilder.WriteString(fmt.Sprintf(`{"%s":{ "order": "%s"}},`, sortParts[0], sortParts[1])) + } + } + sortBuilder.WriteString(`{"created":{ "order": "desc"}}`) hasFilter := false if keyword != "" { mustBuilder.WriteString(fmt.Sprintf(`{"query_string":{"default_field":"*","query": "%s"}}`, keyword)) @@ -122,7 +132,7 @@ func (h *AlertAPI) searchAlert(w http.ResponseWriter, req *http.Request, ps http } q := orm.Query{} - queryDSL = fmt.Sprintf(queryDSL, mustBuilder.String(), size, from) + queryDSL = fmt.Sprintf(queryDSL, sortBuilder.String(), mustBuilder.String(), size, from) q.RawQuery = []byte(queryDSL) err, res := orm.Search(&alerting.Alert{}, &q)