update group data struct

This commit is contained in:
liugq 2022-07-07 21:25:45 +08:00
parent 29223f50a2
commit 49e6e27d3d
2 changed files with 13 additions and 9 deletions

View File

@ -17,6 +17,12 @@ type Metric struct {
Title string `json:"title"` //text template Title string `json:"title"` //text template
Message string `json:"message"` // text template Message string `json:"message"` // text template
FormatType string `json:"format_type,omitempty"` FormatType string `json:"format_type,omitempty"`
Groups []MetricGroupItem `json:"groups"` //bucket group
}
type MetricGroupItem struct {
Field string `json:"field"`
Limit int `json:"limit"`
} }
func (m *Metric) GenerateExpression() (string, error){ func (m *Metric) GenerateExpression() (string, error){
if len(m.Items) == 1 { if len(m.Items) == 1 {
@ -45,8 +51,6 @@ type MetricItem struct {
Name string `json:"name"` Name string `json:"name"`
Field string `json:"field"` Field string `json:"field"`
Statistic string `json:"statistic"` Statistic string `json:"statistic"`
Group []string `json:"group"` //bucket group
Limit int `json:"limit"`
} }
type QueryResult struct { type QueryResult struct {

View File

@ -76,19 +76,19 @@ func (engine *Engine) GenerateQuery(rule *alerting.Rule, filterParam *alerting.F
} }
var rootAggs util.MapStr var rootAggs util.MapStr
groups := rule.Metrics.Items[0].Group groups := rule.Metrics.Groups
limit := rule.Metrics.Items[0].Limit
//top group 10
if limit <= 0 {
limit = 10
}
if grpLength := len(groups); grpLength > 0 { if grpLength := len(groups); grpLength > 0 {
var lastGroupAgg util.MapStr var lastGroupAgg util.MapStr
for i := grpLength-1; i>=0; i-- { for i := grpLength-1; i>=0; i-- {
limit := groups[i].Limit
//top group 10
if limit <= 0 {
limit = 10
}
groupAgg := util.MapStr{ groupAgg := util.MapStr{
"terms": util.MapStr{ "terms": util.MapStr{
"field": groups[i], "field": groups[i].Field,
"size": limit, "size": limit,
}, },
} }