diff --git a/public/app/plugins/datasource/elasticsearch/components/QueryEditor/AnnotationQueryEditor.tsx b/public/app/plugins/datasource/elasticsearch/components/QueryEditor/AnnotationQueryEditor.tsx index 60d12b10cf4..413decf565e 100644 --- a/public/app/plugins/datasource/elasticsearch/components/QueryEditor/AnnotationQueryEditor.tsx +++ b/public/app/plugins/datasource/elasticsearch/components/QueryEditor/AnnotationQueryEditor.tsx @@ -23,9 +23,15 @@ export function ElasticsearchAnnotationsQueryEditor(props: Props) { { + const currentTarget = annotation.target ?? { refId: 'annotation_query' }; + const newTarget = { + ...currentTarget, + query, + }; + onAnnotationChange({ ...annotation, - query, + target: newTarget, }); }} /> diff --git a/public/app/plugins/datasource/elasticsearch/datasource.ts b/public/app/plugins/datasource/elasticsearch/datasource.ts index e1d887b9f6f..1bfc8aa9eb3 100644 --- a/public/app/plugins/datasource/elasticsearch/datasource.ts +++ b/public/app/plugins/datasource/elasticsearch/datasource.ts @@ -257,7 +257,17 @@ export class ElasticDatasource const annotation = options.annotation; const timeField = annotation.timeField || '@timestamp'; const timeEndField = annotation.timeEndField || null; - const queryString = annotation.query; + + // the `target.query` is the "new" location for the query. + // normally we would write this code as + // try-the-new-place-then-try-the-old-place, + // but we had the bug at + // https://github.com/grafana/grafana/issues/61107 + // that may have stored annotations where + // both the old and the new place are set, + // and in that scenario the old place needs + // to have priority. + const queryString = annotation.query ?? annotation.target?.query; const tagsField = annotation.tagsField || 'tags'; const textField = annotation.textField || null;