Elasticsearch: Fix legend for alerting, expressions and previously frontend queries (#84485)

* Elasticsearch: Fix legend for alerting, expressions and previously frontend queries

* Add comment

* Update comment
This commit is contained in:
Ivana Huckova
2024-03-18 18:01:33 +01:00
committed by GitHub
parent 296f4219f8
commit 494d169980
6 changed files with 137 additions and 49 deletions
+15 -8
View File
@@ -23,20 +23,27 @@ const (
)
type elasticsearchDataQuery struct {
client es.Client
dataQueries []backend.DataQuery
logger log.Logger
ctx context.Context
tracer tracing.Tracer
client es.Client
dataQueries []backend.DataQuery
logger log.Logger
ctx context.Context
tracer tracing.Tracer
keepLabelsInResponse bool
}
var newElasticsearchDataQuery = func(ctx context.Context, client es.Client, dataQuery []backend.DataQuery, logger log.Logger, tracer tracing.Tracer) *elasticsearchDataQuery {
var newElasticsearchDataQuery = func(ctx context.Context, client es.Client, req *backend.QueryDataRequest, logger log.Logger, tracer tracing.Tracer) *elasticsearchDataQuery {
_, fromAlert := req.Headers[headerFromAlert]
fromExpression := req.GetHTTPHeader(headerFromExpression) != ""
return &elasticsearchDataQuery{
client: client,
dataQueries: dataQuery,
dataQueries: req.Queries,
logger: logger,
ctx: ctx,
tracer: tracer,
// To maintain backward compatibility, it is necessary to keep labels in responses for alerting and expressions queries.
// Historically, these labels have been used in alerting rules and transformations.
keepLabelsInResponse: fromAlert || fromExpression,
}
}
@@ -77,7 +84,7 @@ func (e *elasticsearchDataQuery) execute() (*backend.QueryDataResponse, error) {
return errorsource.AddErrorToResponse(e.dataQueries[0].RefID, response, err), nil
}
return parseResponse(e.ctx, res.Responses, queries, e.client.GetConfiguredFields(), e.logger, e.tracer)
return parseResponse(e.ctx, res.Responses, queries, e.client.GetConfiguredFields(), e.keepLabelsInResponse, e.logger, e.tracer)
}
func (e *elasticsearchDataQuery) processQuery(q *Query, ms *es.MultiSearchRequestBuilder, from, to int64) error {