mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Loki search words: process negative expressions as negative search words
This commit is contained in:
parent
f612a72f96
commit
d875b25049
@ -63,6 +63,10 @@ describe('getHighlighterExpressionsFromQuery', () => {
|
||||
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x" |~ `y`')).toEqual(['x', 'y']);
|
||||
});
|
||||
|
||||
it('returns expressions for query with negative filter chain using both backticks and quotes', () => {
|
||||
expect(getHighlighterExpressionsFromQuery('{foo="bar"} != "x" !~ `y`')).toEqual(['-x', '-y']);
|
||||
});
|
||||
|
||||
it('returns expression for query with log parser', () => {
|
||||
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x" | logfmt')).toEqual(['x']);
|
||||
});
|
||||
@ -71,8 +75,8 @@ describe('getHighlighterExpressionsFromQuery', () => {
|
||||
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x" |~ "y" | logfmt')).toEqual(['x', 'y']);
|
||||
});
|
||||
|
||||
it('returns drops expressions for query with negative filter chain using quotes', () => {
|
||||
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x" != "y"')).toEqual(['x']);
|
||||
it('returns expressions for query with negative filter chain using quotes', () => {
|
||||
expect(getHighlighterExpressionsFromQuery('{foo="bar"} |= "x" != "y"')).toEqual(['x', '-y']);
|
||||
});
|
||||
|
||||
it('returns expressions for query with filter chain using backticks', () => {
|
||||
|
@ -17,6 +17,8 @@ import {
|
||||
MetricExpr,
|
||||
Matcher,
|
||||
Identifier,
|
||||
Nre,
|
||||
Neq,
|
||||
} from '@grafana/lezer-logql';
|
||||
import { DataQuery } from '@grafana/schema';
|
||||
|
||||
@ -31,7 +33,7 @@ export function formatQuery(selector: string | undefined): string {
|
||||
|
||||
/**
|
||||
* Returns search terms from a LogQL query.
|
||||
* E.g., `{} |= foo |=bar != baz` returns `['foo', 'bar']`.
|
||||
* E.g.: `{} |= foo |=bar != baz` returns `['foo', 'bar', '-baz']`.
|
||||
*/
|
||||
export function getHighlighterExpressionsFromQuery(input: string): string[] {
|
||||
const results = [];
|
||||
@ -49,9 +51,10 @@ export function getHighlighterExpressionsFromQuery(input: string): string[] {
|
||||
for (let filter of filters) {
|
||||
const pipeExact = filter.getChild(Filter)?.getChild(PipeExact);
|
||||
const pipeMatch = filter.getChild(Filter)?.getChild(PipeMatch);
|
||||
const negativeExp = filter.getChild(Filter)?.getChild(Neq) || filter.getChild(Filter)?.getChild(Nre);
|
||||
const string = filter.getChild(String);
|
||||
|
||||
if ((!pipeExact && !pipeMatch) || !string) {
|
||||
if ((!pipeExact && !pipeMatch && !negativeExp) || !string) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -76,7 +79,7 @@ export function getHighlighterExpressionsFromQuery(input: string): string[] {
|
||||
}
|
||||
|
||||
if (resultTerm) {
|
||||
results.push(resultTerm);
|
||||
results.push(negativeExp ? `-${resultTerm}` : resultTerm);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
|
Loading…
Reference in New Issue
Block a user