tech(elastic): use bool conditions for all es queries

This commit is contained in:
bergquist
2016-12-06 16:04:31 +01:00
parent 6440d884db
commit 873024b917
7 changed files with 59 additions and 102 deletions

View File

@@ -0,0 +1,2 @@
script.inline: on
script.indexed: on

View File

@@ -0,0 +1,8 @@
elasticsearch1:
image: elasticsearch:1.7.6
command: elasticsearch -Des.network.host=0.0.0.0
ports:
- "11200:9200"
- "11300:9300"
volumes:
- ./blocks/elastic/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

View File

@@ -4,5 +4,5 @@ elasticsearch5:
image: elasticsearch:5 image: elasticsearch:5
command: elasticsearch command: elasticsearch
ports: ports:
- "9200:9200" - "10200:9200"
- "9300:9300" - "10300:9300"

View File

@@ -88,7 +88,16 @@ function (angular, _, moment, kbn, ElasticQueryBuilder, IndexPattern, ElasticRes
} }
var queryInterpolated = templateSrv.replace(queryString, {}, 'lucene'); var queryInterpolated = templateSrv.replace(queryString, {}, 'lucene');
var query = { "bool": { "must": [{ "range": range }, { "query_string": { "query": queryInterpolated } }] }}; var query = {
"bool": {
"must": [
{ "range": range },
{ "query_string": {
"query": queryInterpolated }
}
]
}
};
var data = { var data = {
"query" : query, "query" : query,

View File

@@ -76,23 +76,13 @@ function (queryDef) {
for (var i = 0; i < aggDef.settings.filters.length; i++) { for (var i = 0; i < aggDef.settings.filters.length; i++) {
var query = aggDef.settings.filters[i].query; var query = aggDef.settings.filters[i].query;
if (this.esVersion >= 5) {
filterObj[query] = { filterObj[query] = {
query_string: { query_string: {
query: query, query: query,
analyze_wildcard: true analyze_wildcard: true
} }
}; };
} else {
filterObj[query] = {
query: {
query_string: {
query: query,
analyze_wildcard: true
}
}
};
}
} }
return filterObj; return filterObj;
@@ -119,12 +109,7 @@ function (queryDef) {
} }
var i, filter, condition, must; var i, filter, condition, must;
if (this.esVersion >= 5) {
must = query.query.bool.must; must = query.query.bool.must;
} else {
must = query.query.filtered.filter.bool.must;
}
for (i = 0; i < adhocFilters.length; i++) { for (i = 0; i < adhocFilters.length; i++) {
filter = adhocFilters[i]; filter = adhocFilters[i];
@@ -143,7 +128,6 @@ function (queryDef) {
var i, nestedAggs, metric; var i, nestedAggs, metric;
var query = {}; var query = {};
if (this.esVersion >= 5) {
query = { query = {
"size": 0, "size": 0,
"query": { "query": {
@@ -159,26 +143,6 @@ function (queryDef) {
} }
} }
}; };
} else {
query = {
"size": 0,
"query": {
"filtered": {
"query": {
"query_string": {
"analyze_wildcard": true,
"query": '$lucene_query',
}
},
"filter": {
"bool": {
"must": [{"range": this.getRangeFilter()}]
}
}
}
}
};
}
this.addAdhocFilters(query, adhocFilters); this.addAdhocFilters(query, adhocFilters);
@@ -258,7 +222,6 @@ function (queryDef) {
ElasticQueryBuilder.prototype.getTermsQuery = function(queryDef) { ElasticQueryBuilder.prototype.getTermsQuery = function(queryDef) {
var query; var query;
if (this.esVersion >= 5) {
query = { query = {
"size": 0, "size": 0,
"query": { "query": {
@@ -277,30 +240,6 @@ function (queryDef) {
}); });
} }
} else {
query = {
"size": 0,
"query": {
"filtered": {
"filter": {
"bool": {
"must": [{"range": this.getRangeFilter()}]
}
}
}
}
};
if (queryDef.query) {
query.query.filtered.query = {
"query_string": {
"analyze_wildcard": true,
"query": queryDef.query,
}
};
}
}
query.aggs = { query.aggs = {
"1": { "1": {
"terms": { "terms": {

View File

@@ -77,7 +77,7 @@ describe('ElasticDatasource', function() {
it('should json escape lucene query', function() { it('should json escape lucene query', function() {
var body = angular.fromJson(parts[1]); var body = angular.fromJson(parts[1]);
expect(body.query.filtered.query.query_string.query).to.be('escape\\:test'); expect(body.query.bool.must[1].query_string.query).to.be('escape\\:test');
}); });
}); });

View File

@@ -16,7 +16,7 @@ describe('ElasticQueryBuilder', function() {
bucketAggs: [{type: 'date_histogram', field: '@timestamp', id: '1'}], bucketAggs: [{type: 'date_histogram', field: '@timestamp', id: '1'}],
}); });
expect(query.query.filtered.filter.bool.must[0].range["@timestamp"].gte).to.be("$timeFrom"); expect(query.query.bool.must[0].range["@timestamp"].gte).to.be("$timeFrom");
expect(query.aggs["1"].date_histogram.extended_bounds.min).to.be("$timeFrom"); expect(query.aggs["1"].date_histogram.extended_bounds.min).to.be("$timeFrom");
}); });
@@ -154,8 +154,8 @@ describe('ElasticQueryBuilder', function() {
], ],
}); });
expect(query.aggs["2"].filters.filters["@metric:cpu"].query.query_string.query).to.be("@metric:cpu"); expect(query.aggs["2"].filters.filters["@metric:cpu"].query_string.query).to.be("@metric:cpu");
expect(query.aggs["2"].filters.filters["@metric:logins.count"].query.query_string.query).to.be("@metric:logins.count"); expect(query.aggs["2"].filters.filters["@metric:logins.count"].query_string.query).to.be("@metric:logins.count");
expect(query.aggs["2"].aggs["4"].date_histogram.field).to.be("@timestamp"); expect(query.aggs["2"].aggs["4"].date_histogram.field).to.be("@timestamp");
}); });
@@ -291,7 +291,6 @@ describe('ElasticQueryBuilder', function() {
{key: 'key1', operator: '=', value: 'value1'} {key: 'key1', operator: '=', value: 'value1'}
]); ]);
expect(query.query.filtered.filter.bool.must[1].term["key1"]).to.be("value1"); expect(query.query.bool.must[2].term["key1"]).to.be("value1");
}); });
}); });