|
|
|
@ -37,11 +37,8 @@ func (e *timeSeriesQuery) execute() (*backend.QueryDataResponse, error) { |
|
|
|
|
|
|
|
|
|
from := e.dataQueries[0].TimeRange.From.UnixNano() / int64(time.Millisecond) |
|
|
|
|
to := e.dataQueries[0].TimeRange.To.UnixNano() / int64(time.Millisecond) |
|
|
|
|
result := backend.QueryDataResponse{ |
|
|
|
|
Responses: backend.Responses{}, |
|
|
|
|
} |
|
|
|
|
for _, q := range queries { |
|
|
|
|
if err := e.processQuery(q, ms, from, to, result); err != nil { |
|
|
|
|
if err := e.processQuery(q, ms, from, to); err != nil { |
|
|
|
|
return &backend.QueryDataResponse{}, err |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -59,8 +56,7 @@ func (e *timeSeriesQuery) execute() (*backend.QueryDataResponse, error) { |
|
|
|
|
return parseResponse(res.Responses, queries) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (e *timeSeriesQuery) processQuery(q *Query, ms *es.MultiSearchRequestBuilder, from, to int64, |
|
|
|
|
result backend.QueryDataResponse) error { |
|
|
|
|
func (e *timeSeriesQuery) processQuery(q *Query, ms *es.MultiSearchRequestBuilder, from, to int64) error { |
|
|
|
|
defaultTimeField := e.client.GetTimeField() |
|
|
|
|
|
|
|
|
|
b := ms.Search(q.Interval) |
|
|
|
@ -72,10 +68,7 @@ func (e *timeSeriesQuery) processQuery(q *Query, ms *es.MultiSearchRequestBuilde |
|
|
|
|
if len(q.BucketAggs) == 0 { |
|
|
|
|
// If no aggregations, only document and logs queries are valid
|
|
|
|
|
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{ |
|
|
|
|
Error: fmt.Errorf("invalid query, missing metrics and aggregations"), |
|
|
|
|
} |
|
|
|
|
return nil |
|
|
|
|
return fmt.Errorf("invalid query, missing metrics and aggregations") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Defaults for log and document queries
|
|
|
|
|