mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Add support to ElasticSearch 5.0
This commit is contained in:
@@ -24,6 +24,7 @@ export class ElasticConfigCtrl {
|
|||||||
esVersions = [
|
esVersions = [
|
||||||
{name: '1.x', value: 1},
|
{name: '1.x', value: 1},
|
||||||
{name: '2.x', value: 2},
|
{name: '2.x', value: 2},
|
||||||
|
{name: '5.x', value: 5},
|
||||||
];
|
];
|
||||||
|
|
||||||
indexPatternTypeChanged() {
|
indexPatternTypeChanged() {
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ function (angular, _, moment, kbn, ElasticQueryBuilder, IndexPattern, ElasticRes
|
|||||||
luceneQuery = luceneQuery.substr(1, luceneQuery.length - 2);
|
luceneQuery = luceneQuery.substr(1, luceneQuery.length - 2);
|
||||||
esQuery = esQuery.replace("$lucene_query", luceneQuery);
|
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);
|
var header = this.getQueryHeader(searchType, options.range.from, options.range.to);
|
||||||
payload += header + '\n';
|
payload += header + '\n';
|
||||||
|
|
||||||
@@ -243,7 +243,8 @@ function (angular, _, moment, kbn, ElasticQueryBuilder, IndexPattern, ElasticRes
|
|||||||
|
|
||||||
this.getTerms = function(queryDef) {
|
this.getTerms = function(queryDef) {
|
||||||
var range = timeSrv.timeRange();
|
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));
|
var esQuery = angular.toJson(this.queryBuilder.getTermsQuery(queryDef));
|
||||||
|
|
||||||
esQuery = esQuery.replace("$lucene_query", queryDef.query || '*');
|
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 = esQuery.replace(/\$timeTo/g, range.to.valueOf());
|
||||||
esQuery = header + '\n' + esQuery + '\n';
|
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;
|
var buckets = res.responses[0].aggregations["1"].buckets;
|
||||||
return _.map(buckets, function(bucket) {
|
return _.map(buckets, function(bucket) {
|
||||||
return {text: bucket.key, value: bucket.key};
|
return {text: bucket.key, value: bucket.key};
|
||||||
|
|||||||
@@ -75,14 +75,23 @@ 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;
|
||||||
filterObj[query] = {
|
if (this.esVersion >= 5) {
|
||||||
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;
|
||||||
@@ -106,24 +115,43 @@ function (queryDef) {
|
|||||||
target.timeField = this.timeField;
|
target.timeField = this.timeField;
|
||||||
|
|
||||||
var i, nestedAggs, metric;
|
var i, nestedAggs, metric;
|
||||||
var query = {
|
var query = {};
|
||||||
"size": 0,
|
if (this.esVersion >= 5) {
|
||||||
"query": {
|
query = {
|
||||||
"filtered": {
|
"size": 0,
|
||||||
"query": {
|
"query": {
|
||||||
"query_string": {
|
"bool": {
|
||||||
"analyze_wildcard": true,
|
"must": [
|
||||||
"query": '$lucene_query',
|
{"range": this.getRangeFilter()},
|
||||||
}
|
{"query_string": {
|
||||||
},
|
"analyze_wildcard": true,
|
||||||
"filter": {
|
"query": '$lucene_query'
|
||||||
"bool": {
|
}
|
||||||
"must": [{"range": this.getRangeFilter()}]
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
query = {
|
||||||
|
"size": 0,
|
||||||
|
"query": {
|
||||||
|
"filtered": {
|
||||||
|
"query": {
|
||||||
|
"query_string": {
|
||||||
|
"analyze_wildcard": true,
|
||||||
|
"query": '$lucene_query',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"filter": {
|
||||||
|
"bool": {
|
||||||
|
"must": [{"range": this.getRangeFilter()}]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
};
|
}
|
||||||
|
|
||||||
// handle document query
|
// handle document query
|
||||||
if (target.bucketAggs.length === 0) {
|
if (target.bucketAggs.length === 0) {
|
||||||
@@ -199,24 +227,43 @@ function (queryDef) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
ElasticQueryBuilder.prototype.getTermsQuery = function(queryDef) {
|
ElasticQueryBuilder.prototype.getTermsQuery = function(queryDef) {
|
||||||
var query = {
|
var query = {};
|
||||||
"size": 0,
|
if (this.esVersion >= 5) {
|
||||||
"query": {
|
query = {
|
||||||
"filtered": {
|
"size": 0,
|
||||||
"query": {
|
"query": {
|
||||||
"query_string": {
|
"bool": {
|
||||||
"analyze_wildcard": true,
|
"must": [
|
||||||
"query": '$lucene_query',
|
{"range": this.getRangeFilter()},
|
||||||
}
|
{"query_string": {
|
||||||
},
|
"analyze_wildcard": true,
|
||||||
"filter": {
|
"query": '$lucene_query'
|
||||||
"bool": {
|
}
|
||||||
"must": [{"range": this.getRangeFilter()}]
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
query = {
|
||||||
|
"size": 0,
|
||||||
|
"query": {
|
||||||
|
"filtered": {
|
||||||
|
"query": {
|
||||||
|
"query_string": {
|
||||||
|
"analyze_wildcard": true,
|
||||||
|
"query": '$lucene_query',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"filter": {
|
||||||
|
"bool": {
|
||||||
|
"must": [{"range": this.getRangeFilter()}]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
};
|
}
|
||||||
query.aggs = {
|
query.aggs = {
|
||||||
"1": {
|
"1": {
|
||||||
"terms": {
|
"terms": {
|
||||||
|
|||||||
Reference in New Issue
Block a user