mirror of
https://github.com/grafana/grafana.git
synced 2025-02-14 01:23:32 -06:00
Support for all ad-hoc filter operators on Elasticsearch (#7612)
This commit is contained in:
parent
072c1559ba
commit
b01fd3d0b5
@ -120,7 +120,28 @@ function (queryDef) {
|
||||
filter = adhocFilters[i];
|
||||
condition = {};
|
||||
condition[filter.key] = filter.value;
|
||||
query.query.bool.filter.push({"term": condition});
|
||||
switch(filter.operator){
|
||||
case "=":
|
||||
query.query.bool.filter.push({"term": condition});
|
||||
break;
|
||||
case "!=":
|
||||
query.query.bool.filter.push({"bool": {"must_not": {"term": condition}}});
|
||||
break;
|
||||
case "<":
|
||||
condition[filter.key] = {"lt": filter.value};
|
||||
query.query.bool.filter.push({"range": condition});
|
||||
break;
|
||||
case ">":
|
||||
condition[filter.key] = {"gt": filter.value};
|
||||
query.query.bool.filter.push({"range": condition});
|
||||
break;
|
||||
case "=~":
|
||||
query.query.bool.filter.push({"regexp": condition});
|
||||
break;
|
||||
case "!~":
|
||||
query.query.bool.filter.push({"bool": {"must_not": {"regexp": condition}}});
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -255,9 +255,19 @@ describe('ElasticQueryBuilder', function() {
|
||||
timeField: '@timestamp',
|
||||
bucketAggs: [{type: 'date_histogram', field: '@timestamp', id: '3'}],
|
||||
}, [
|
||||
{key: 'key1', operator: '=', value: 'value1'}
|
||||
{key: 'key1', operator: '=', value: 'value1'},
|
||||
{key: 'key2', operator: '!=', value: 'value2'},
|
||||
{key: 'key3', operator: '<', value: 'value3'},
|
||||
{key: 'key4', operator: '>', value: 'value4'},
|
||||
{key: 'key5', operator: '=~', value: 'value5'},
|
||||
{key: 'key6', operator: '!~', value: 'value6'},
|
||||
]);
|
||||
|
||||
expect(query.query.bool.filter[2].term["key1"]).to.be("value1");
|
||||
expect(query.query.bool.filter[3].bool.must_not.term["key2"]).to.be("value2");
|
||||
expect(query.query.bool.filter[4].range["key3"].lt).to.be("value3");
|
||||
expect(query.query.bool.filter[5].range["key4"].gt).to.be("value4");
|
||||
expect(query.query.bool.filter[6].regexp["key5"]).to.be("value5");
|
||||
expect(query.query.bool.filter[7].bool.must_not.regexp["key6"]).to.be("value6");
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user