diff --git a/public/app/plugins/datasource/elasticsearch/query_builder.js b/public/app/plugins/datasource/elasticsearch/query_builder.js index b3d623b6189..cb4f87fdc04 100644 --- a/public/app/plugins/datasource/elasticsearch/query_builder.js +++ b/public/app/plugins/datasource/elasticsearch/query_builder.js @@ -1,7 +1,8 @@ define([ - './query_def' + './query_def', + 'lodash', ], -function (queryDef) { +function (queryDef, _) { 'use strict'; function ElasticQueryBuilder(options) { @@ -133,17 +134,20 @@ function (queryDef) { return; } - var i, filter, condition; + var i, filter, condition, queryCondition; for (i = 0; i < adhocFilters.length; i++) { filter = adhocFilters[i]; condition = {}; condition[filter.key] = filter.value; + queryCondition = {}; + queryCondition[filter.key] = {query: filter.value}; + switch(filter.operator){ case "=": - query.query.bool.filter.push({"term": condition}); + _.set(query, "query.bool.must.match_phrase", queryCondition); break; case "!=": - query.query.bool.filter.push({"bool": {"must_not": {"term": condition}}}); + _.set(query, "query.bool.must_not.match_phrase", queryCondition); break; case "<": condition[filter.key] = {"lt": filter.value}; diff --git a/public/app/plugins/datasource/elasticsearch/specs/query_builder_specs.ts b/public/app/plugins/datasource/elasticsearch/specs/query_builder_specs.ts index 4ea108359a1..5e91c904166 100644 --- a/public/app/plugins/datasource/elasticsearch/specs/query_builder_specs.ts +++ b/public/app/plugins/datasource/elasticsearch/specs/query_builder_specs.ts @@ -289,11 +289,11 @@ describe('ElasticQueryBuilder', function() { {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"); + expect(query.query.bool.must.match_phrase["key1"].query).to.be("value1"); + expect(query.query.bool.must_not.match_phrase["key2"].query).to.be("value2"); + expect(query.query.bool.filter[2].range["key3"].lt).to.be("value3"); + expect(query.query.bool.filter[3].range["key4"].gt).to.be("value4"); + expect(query.query.bool.filter[4].regexp["key5"]).to.be("value5"); + expect(query.query.bool.filter[5].bool.must_not.regexp["key6"]).to.be("value6"); }); });