Support for all ad-hoc filter operators on Elasticsearch (#7612)
This commit is contained in:
committed by
Torkel Ödegaard
parent
072c1559ba
commit
b01fd3d0b5
@@ -120,7 +120,28 @@ function (queryDef) {
|
|||||||
filter = adhocFilters[i];
|
filter = adhocFilters[i];
|
||||||
condition = {};
|
condition = {};
|
||||||
condition[filter.key] = filter.value;
|
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',
|
timeField: '@timestamp',
|
||||||
bucketAggs: [{type: 'date_histogram', field: '@timestamp', id: '3'}],
|
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[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");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user