Commit 0d34740a by Leandro Piccilli

Add support to ElasticSearch 5.0

parent ecf5b61e
......@@ -24,6 +24,7 @@ export class ElasticConfigCtrl {
esVersions = [
{name: '1.x', value: 1},
{name: '2.x', value: 2},
{name: '5.x', value: 5},
];
indexPatternTypeChanged() {
......
......@@ -182,7 +182,7 @@ function (angular, _, moment, kbn, ElasticQueryBuilder, IndexPattern, ElasticRes
luceneQuery = luceneQuery.substr(1, luceneQuery.length - 2);
esQuery = esQuery.replace("$lucene_query", luceneQuery);
var searchType = queryObj.size === 0 ? 'count' : 'query_then_fetch';
var searchType = (queryObj.size === 0 && this.esVersion < 5) ? 'count' : 'query_then_fetch';
var header = this.getQueryHeader(searchType, options.range.from, options.range.to);
payload += header + '\n';
......@@ -243,7 +243,8 @@ function (angular, _, moment, kbn, ElasticQueryBuilder, IndexPattern, ElasticRes
this.getTerms = function(queryDef) {
var range = timeSrv.timeRange();
var header = this.getQueryHeader('count', range.from, range.to);
var searchType = this.esVersion >= 5 ? 'query_then_fetch' : 'count' ;
var header = this.getQueryHeader(searchType, range.from, range.to);
var esQuery = angular.toJson(this.queryBuilder.getTermsQuery(queryDef));
esQuery = esQuery.replace("$lucene_query", queryDef.query || '*');
......@@ -251,7 +252,7 @@ function (angular, _, moment, kbn, ElasticQueryBuilder, IndexPattern, ElasticRes
esQuery = esQuery.replace(/\$timeTo/g, range.to.valueOf());
esQuery = header + '\n' + esQuery + '\n';
return this._post('/_msearch?search_type=count', esQuery).then(function(res) {
return this._post('/_msearch?search_type=' + searchType, esQuery).then(function(res) {
var buckets = res.responses[0].aggregations["1"].buckets;
return _.map(buckets, function(bucket) {
return {text: bucket.key, value: bucket.key};
......
......@@ -75,6 +75,14 @@ function (queryDef) {
for (var i = 0; i < aggDef.settings.filters.length; i++) {
var query = aggDef.settings.filters[i].query;
if (this.esVersion >= 5) {
filterObj[query] = {
query_string: {
query: query,
analyze_wildcard: true
}
};
} else {
filterObj[query] = {
query: {
query_string: {
......@@ -84,6 +92,7 @@ function (queryDef) {
}
};
}
}
return filterObj;
};
......@@ -106,7 +115,25 @@ function (queryDef) {
target.timeField = this.timeField;
var i, nestedAggs, metric;
var query = {
var query = {};
if (this.esVersion >= 5) {
query = {
"size": 0,
"query": {
"bool": {
"must": [
{"range": this.getRangeFilter()},
{"query_string": {
"analyze_wildcard": true,
"query": '$lucene_query'
}
}
]
}
}
};
} else {
query = {
"size": 0,
"query": {
"filtered": {
......@@ -124,6 +151,7 @@ function (queryDef) {
}
}
};
}
// handle document query
if (target.bucketAggs.length === 0) {
......@@ -199,7 +227,25 @@ function (queryDef) {
};
ElasticQueryBuilder.prototype.getTermsQuery = function(queryDef) {
var query = {
var query = {};
if (this.esVersion >= 5) {
query = {
"size": 0,
"query": {
"bool": {
"must": [
{"range": this.getRangeFilter()},
{"query_string": {
"analyze_wildcard": true,
"query": '$lucene_query'
}
}
]
}
}
};
} else {
query = {
"size": 0,
"query": {
"filtered": {
......@@ -217,6 +263,7 @@ function (queryDef) {
}
}
};
}
query.aggs = {
"1": {
"terms": {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment