Elasticsearch: Unify adhoc variables processing (#65274)

This commit is contained in:
Ivana Huckova
2023-03-23 17:46:33 +01:00
committed by GitHub
parent ff83367e6e
commit 9ba38b760a
4 changed files with 41 additions and 149 deletions

View File

@@ -604,36 +604,6 @@ describe('ElasticQueryBuilder', () => {
expect(firstLevel.nested.path).toBe('nested_field');
});
// This test wasn't migrated, as adhoc variables are going to be interpolated before
// Or we need to add this to backend query builder (TBD)
it('with adhoc filters', () => {
const query = builder.build(
{
refId: 'A',
metrics: [{ type: 'count', id: '0' }],
timeField: '@timestamp',
bucketAggs: [{ type: 'date_histogram', field: '@timestamp', id: '3' }],
},
[
{ key: 'key1', operator: '=', value: 'value1', condition: '' },
{ key: 'key2', operator: '=', value: 'value2', condition: '' },
{ key: 'key2', operator: '!=', value: 'value2', condition: '' },
{ key: 'key3', operator: '<', value: 'value3', condition: '' },
{ key: 'key4', operator: '>', value: 'value4', condition: '' },
{ key: 'key5', operator: '=~', value: 'value5', condition: '' },
{ key: 'key6', operator: '!~', value: 'value6', condition: '' },
]
);
expect(query.query.bool.must[0].match_phrase['key1'].query).toBe('value1');
expect(query.query.bool.must[1].match_phrase['key2'].query).toBe('value2');
expect(query.query.bool.must_not[0].match_phrase['key2'].query).toBe('value2');
expect(query.query.bool.filter[1].range['key3'].lt).toBe('value3');
expect(query.query.bool.filter[2].range['key4'].gt).toBe('value4');
expect(query.query.bool.filter[3].regexp['key5']).toBe('value5');
expect(query.query.bool.filter[4].bool.must_not.regexp['key6']).toBe('value6');
});
describe('getTermsQuery', () => {
function testGetTermsQuery(queryDef: TermsQuery) {
const query = builder.getTermsQuery(queryDef);
@@ -769,26 +739,6 @@ describe('ElasticQueryBuilder', () => {
).toBeFalsy();
});
});
it('with adhoc filters', () => {
// TODO: Types for AdHocFilters
const adhocFilters = [
{ key: 'key1', operator: '=', value: 'value1', condition: '' },
{ key: 'key2', operator: '!=', value: 'value2', condition: '' },
{ key: 'key3', operator: '<', value: 'value3', condition: '' },
{ key: 'key4', operator: '>', value: 'value4', condition: '' },
{ key: 'key5', operator: '=~', value: 'value5', condition: '' },
{ key: 'key6', operator: '!~', value: 'value6', condition: '' },
];
const query = builder.getLogsQuery({ refId: 'A' }, 500, adhocFilters);
expect(query.query.bool.must[0].match_phrase['key1'].query).toBe('value1');
expect(query.query.bool.must_not[0].match_phrase['key2'].query).toBe('value2');
expect(query.query.bool.filter[1].range['key3'].lt).toBe('value3');
expect(query.query.bool.filter[2].range['key4'].gt).toBe('value4');
expect(query.query.bool.filter[3].regexp['key5']).toBe('value5');
expect(query.query.bool.filter[4].bool.must_not.regexp['key6']).toBe('value6');
});
});
describe('Value casting for settings', () => {