mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
elasticsearch: changed ad hoc filters from using term filters to using phrase match queries, closing #9095
This commit is contained in:
parent
3b9fbd60d8
commit
e91cf28f8d
@ -1,7 +1,8 @@
|
|||||||
define([
|
define([
|
||||||
'./query_def'
|
'./query_def',
|
||||||
|
'lodash',
|
||||||
],
|
],
|
||||||
function (queryDef) {
|
function (queryDef, _) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
function ElasticQueryBuilder(options) {
|
function ElasticQueryBuilder(options) {
|
||||||
@ -133,17 +134,20 @@ function (queryDef) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var i, filter, condition;
|
var i, filter, condition, queryCondition;
|
||||||
for (i = 0; i < adhocFilters.length; i++) {
|
for (i = 0; i < adhocFilters.length; i++) {
|
||||||
filter = adhocFilters[i];
|
filter = adhocFilters[i];
|
||||||
condition = {};
|
condition = {};
|
||||||
condition[filter.key] = filter.value;
|
condition[filter.key] = filter.value;
|
||||||
|
queryCondition = {};
|
||||||
|
queryCondition[filter.key] = {query: filter.value};
|
||||||
|
|
||||||
switch(filter.operator){
|
switch(filter.operator){
|
||||||
case "=":
|
case "=":
|
||||||
query.query.bool.filter.push({"term": condition});
|
_.set(query, "query.bool.must.match_phrase", queryCondition);
|
||||||
break;
|
break;
|
||||||
case "!=":
|
case "!=":
|
||||||
query.query.bool.filter.push({"bool": {"must_not": {"term": condition}}});
|
_.set(query, "query.bool.must_not.match_phrase", queryCondition);
|
||||||
break;
|
break;
|
||||||
case "<":
|
case "<":
|
||||||
condition[filter.key] = {"lt": filter.value};
|
condition[filter.key] = {"lt": filter.value};
|
||||||
|
@ -289,11 +289,11 @@ describe('ElasticQueryBuilder', function() {
|
|||||||
{key: 'key6', operator: '!~', value: 'value6'},
|
{key: 'key6', operator: '!~', value: 'value6'},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
expect(query.query.bool.filter[2].term["key1"]).to.be("value1");
|
expect(query.query.bool.must.match_phrase["key1"].query).to.be("value1");
|
||||||
expect(query.query.bool.filter[3].bool.must_not.term["key2"]).to.be("value2");
|
expect(query.query.bool.must_not.match_phrase["key2"].query).to.be("value2");
|
||||||
expect(query.query.bool.filter[4].range["key3"].lt).to.be("value3");
|
expect(query.query.bool.filter[2].range["key3"].lt).to.be("value3");
|
||||||
expect(query.query.bool.filter[5].range["key4"].gt).to.be("value4");
|
expect(query.query.bool.filter[3].range["key4"].gt).to.be("value4");
|
||||||
expect(query.query.bool.filter[6].regexp["key5"]).to.be("value5");
|
expect(query.query.bool.filter[4].regexp["key5"]).to.be("value5");
|
||||||
expect(query.query.bool.filter[7].bool.must_not.regexp["key6"]).to.be("value6");
|
expect(query.query.bool.filter[5].bool.must_not.regexp["key6"]).to.be("value6");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user