mirror of
https://github.com/grafana/grafana.git
synced 2024-11-24 09:50:29 -06:00
Elasticsearch: Use constants for default values and types (#60673)
This commit is contained in:
parent
658414a025
commit
a1ef3d77f2
@ -6,6 +6,12 @@ import (
|
|||||||
"github.com/grafana/grafana/pkg/tsdb/intervalv2"
|
"github.com/grafana/grafana/pkg/tsdb/intervalv2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
highlightPreTagsString = "@HIGHLIGHT@"
|
||||||
|
highlightPostTagsString = "@/HIGHLIGHT@"
|
||||||
|
highlightFragmentSize = 2147483647
|
||||||
|
)
|
||||||
|
|
||||||
// SearchRequestBuilder represents a builder which can build a search request
|
// SearchRequestBuilder represents a builder which can build a search request
|
||||||
type SearchRequestBuilder struct {
|
type SearchRequestBuilder struct {
|
||||||
interval intervalv2.Interval
|
interval intervalv2.Interval
|
||||||
@ -98,9 +104,9 @@ func (b *SearchRequestBuilder) AddHighlight() *SearchRequestBuilder {
|
|||||||
"fields": map[string]interface{}{
|
"fields": map[string]interface{}{
|
||||||
"*": map[string]interface{}{},
|
"*": map[string]interface{}{},
|
||||||
},
|
},
|
||||||
"pre_tags": []string{"@HIGHLIGHT@"},
|
"pre_tags": []string{highlightPreTagsString},
|
||||||
"post_tags": []string{"@/HIGHLIGHT@"},
|
"post_tags": []string{highlightPostTagsString},
|
||||||
"fragment_size": 2147483647,
|
"fragment_size": highlightFragmentSize,
|
||||||
}
|
}
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,11 @@ const (
|
|||||||
filtersType = "filters"
|
filtersType = "filters"
|
||||||
termsType = "terms"
|
termsType = "terms"
|
||||||
geohashGridType = "geohash_grid"
|
geohashGridType = "geohash_grid"
|
||||||
|
// Document types
|
||||||
|
rawDocumentType = "raw_document"
|
||||||
|
rawDataType = "raw_data"
|
||||||
|
// Logs type
|
||||||
|
logsType = "logs"
|
||||||
)
|
)
|
||||||
|
|
||||||
func parseResponse(responses []*es.SearchResponse, targets []*Query) (*backend.QueryDataResponse, error) {
|
func parseResponse(responses []*es.SearchResponse, targets []*Query) (*backend.QueryDataResponse, error) {
|
||||||
|
@ -12,6 +12,10 @@ import (
|
|||||||
"github.com/grafana/grafana/pkg/tsdb/intervalv2"
|
"github.com/grafana/grafana/pkg/tsdb/intervalv2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
defaultSize = 500
|
||||||
|
)
|
||||||
|
|
||||||
type timeSeriesQuery struct {
|
type timeSeriesQuery struct {
|
||||||
client es.Client
|
client es.Client
|
||||||
dataQueries []backend.DataQuery
|
dataQueries []backend.DataQuery
|
||||||
@ -76,7 +80,7 @@ func (e *timeSeriesQuery) processQuery(q *Query, ms *es.MultiSearchRequestBuilde
|
|||||||
|
|
||||||
if len(q.BucketAggs) == 0 {
|
if len(q.BucketAggs) == 0 {
|
||||||
// If no aggregations, only document and logs queries are valid
|
// If no aggregations, only document and logs queries are valid
|
||||||
if len(q.Metrics) == 0 || !(q.Metrics[0].Type == "raw_data" || q.Metrics[0].Type == "raw_document" || q.Metrics[0].Type == "logs") {
|
if len(q.Metrics) == 0 || !(q.Metrics[0].Type == rawDataType || q.Metrics[0].Type == rawDocumentType || q.Metrics[0].Type == logsType) {
|
||||||
result.Responses[q.RefID] = backend.DataResponse{
|
result.Responses[q.RefID] = backend.DataResponse{
|
||||||
Error: fmt.Errorf("invalid query, missing metrics and aggregations"),
|
Error: fmt.Errorf("invalid query, missing metrics and aggregations"),
|
||||||
}
|
}
|
||||||
@ -88,11 +92,11 @@ func (e *timeSeriesQuery) processQuery(q *Query, ms *es.MultiSearchRequestBuilde
|
|||||||
b.SortDesc(e.client.GetTimeField(), "boolean")
|
b.SortDesc(e.client.GetTimeField(), "boolean")
|
||||||
b.SortDesc("_doc", "")
|
b.SortDesc("_doc", "")
|
||||||
b.AddDocValueField(e.client.GetTimeField())
|
b.AddDocValueField(e.client.GetTimeField())
|
||||||
b.Size(metric.Settings.Get("size").MustInt(500))
|
b.Size(metric.Settings.Get("size").MustInt(defaultSize))
|
||||||
|
|
||||||
if metric.Type == "logs" {
|
if metric.Type == "logs" {
|
||||||
// Add additional defaults for log query
|
// Add additional defaults for log query
|
||||||
b.Size(metric.Settings.Get("limit").MustInt(500))
|
b.Size(metric.Settings.Get("limit").MustInt(defaultSize))
|
||||||
b.AddHighlight()
|
b.AddHighlight()
|
||||||
|
|
||||||
// For log query, we add a date histogram aggregation
|
// For log query, we add a date histogram aggregation
|
||||||
@ -321,13 +325,13 @@ func addTermsAgg(aggBuilder es.AggBuilder, bucketAgg *BucketAgg, metrics []*Metr
|
|||||||
} else if size, err := bucketAgg.Settings.Get("size").String(); err == nil {
|
} else if size, err := bucketAgg.Settings.Get("size").String(); err == nil {
|
||||||
a.Size, err = strconv.Atoi(size)
|
a.Size, err = strconv.Atoi(size)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.Size = 500
|
a.Size = defaultSize
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
a.Size = 500
|
a.Size = defaultSize
|
||||||
}
|
}
|
||||||
if a.Size == 0 {
|
if a.Size == 0 {
|
||||||
a.Size = 500
|
a.Size = defaultSize
|
||||||
}
|
}
|
||||||
|
|
||||||
if minDocCount, err := bucketAgg.Settings.Get("min_doc_count").Int(); err == nil {
|
if minDocCount, err := bucketAgg.Settings.Get("min_doc_count").Int(); err == nil {
|
||||||
|
@ -70,7 +70,7 @@ func TestExecuteTimeSeriesQuery(t *testing.T) {
|
|||||||
require.Equal(t, firstLevel.Key, "2")
|
require.Equal(t, firstLevel.Key, "2")
|
||||||
termsAgg := firstLevel.Aggregation.Aggregation.(*es.TermsAggregation)
|
termsAgg := firstLevel.Aggregation.Aggregation.(*es.TermsAggregation)
|
||||||
require.Equal(t, termsAgg.Field, "@host")
|
require.Equal(t, termsAgg.Field, "@host")
|
||||||
require.Equal(t, termsAgg.Size, 500)
|
require.Equal(t, termsAgg.Size, defaultSize)
|
||||||
secondLevel := firstLevel.Aggregation.Aggs[0]
|
secondLevel := firstLevel.Aggregation.Aggs[0]
|
||||||
require.Equal(t, secondLevel.Key, "3")
|
require.Equal(t, secondLevel.Key, "3")
|
||||||
require.Equal(t, secondLevel.Aggregation.Aggregation.(*es.DateHistogramAgg).Field, "@timestamp")
|
require.Equal(t, secondLevel.Aggregation.Aggregation.(*es.DateHistogramAgg).Field, "@timestamp")
|
||||||
@ -421,7 +421,7 @@ func TestExecuteTimeSeriesQuery(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
sr := c.multisearchRequests[0].Requests[0]
|
sr := c.multisearchRequests[0].Requests[0]
|
||||||
|
|
||||||
require.Equal(t, sr.Size, 500)
|
require.Equal(t, sr.Size, defaultSize)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("With raw document metric query (from frontend tests)", func(t *testing.T) {
|
t.Run("With raw document metric query (from frontend tests)", func(t *testing.T) {
|
||||||
@ -440,7 +440,7 @@ func TestExecuteTimeSeriesQuery(t *testing.T) {
|
|||||||
require.Equal(t, rangeFilter.Gte, fromMs)
|
require.Equal(t, rangeFilter.Gte, fromMs)
|
||||||
require.Equal(t, rangeFilter.Format, es.DateFormatEpochMS)
|
require.Equal(t, rangeFilter.Format, es.DateFormatEpochMS)
|
||||||
|
|
||||||
require.Equal(t, sr.Size, 500)
|
require.Equal(t, sr.Size, defaultSize)
|
||||||
require.Equal(t, sr.Sort["@timestamp"], map[string]string{"order": "desc", "unmapped_type": "boolean"})
|
require.Equal(t, sr.Sort["@timestamp"], map[string]string{"order": "desc", "unmapped_type": "boolean"})
|
||||||
require.Equal(t, sr.Sort["_doc"], map[string]string{"order": "desc"})
|
require.Equal(t, sr.Sort["_doc"], map[string]string{"order": "desc"})
|
||||||
require.Equal(t, sr.CustomProps["script_fields"], map[string]interface{}{})
|
require.Equal(t, sr.CustomProps["script_fields"], map[string]interface{}{})
|
||||||
@ -462,7 +462,7 @@ func TestExecuteTimeSeriesQuery(t *testing.T) {
|
|||||||
require.Equal(t, rangeFilter.Gte, fromMs)
|
require.Equal(t, rangeFilter.Gte, fromMs)
|
||||||
require.Equal(t, rangeFilter.Format, es.DateFormatEpochMS)
|
require.Equal(t, rangeFilter.Format, es.DateFormatEpochMS)
|
||||||
|
|
||||||
require.Equal(t, sr.Size, 500)
|
require.Equal(t, sr.Size, defaultSize)
|
||||||
require.Equal(t, sr.Sort["@timestamp"], map[string]string{"order": "desc", "unmapped_type": "boolean"})
|
require.Equal(t, sr.Sort["@timestamp"], map[string]string{"order": "desc", "unmapped_type": "boolean"})
|
||||||
require.Equal(t, sr.Sort["_doc"], map[string]string{"order": "desc"})
|
require.Equal(t, sr.Sort["_doc"], map[string]string{"order": "desc"})
|
||||||
require.Equal(t, sr.CustomProps["script_fields"], map[string]interface{}{})
|
require.Equal(t, sr.CustomProps["script_fields"], map[string]interface{}{})
|
||||||
@ -1347,7 +1347,7 @@ func TestExecuteTimeSeriesQuery(t *testing.T) {
|
|||||||
}`, from, to, 15*time.Second)
|
}`, from, to, 15*time.Second)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
sr := c.multisearchRequests[0].Requests[0]
|
sr := c.multisearchRequests[0].Requests[0]
|
||||||
require.Equal(t, sr.Size, 500)
|
require.Equal(t, sr.Size, defaultSize)
|
||||||
|
|
||||||
rangeFilter := sr.Query.Bool.Filters[0].(*es.RangeFilter)
|
rangeFilter := sr.Query.Bool.Filters[0].(*es.RangeFilter)
|
||||||
require.Equal(t, rangeFilter.Key, c.timeField)
|
require.Equal(t, rangeFilter.Key, c.timeField)
|
||||||
|
Loading…
Reference in New Issue
Block a user