grafana/public/app/plugins/datasource/elasticsearch/queryBuilder.js

79 lines
1.7 KiB
JavaScript
Raw Normal View History

define([
],
function () {
'use strict';
function ElasticQueryBuilder() { }
ElasticQueryBuilder.prototype.build = function(target, timeFrom, timeTo) {
if (target.rawQuery) {
return angular.fromJson(target.rawJson);
}
var query = {
"size": 0,
"query": {
"filtered": {
"query": {
"query_string": {
"analyze_wildcard": true,
"query": target.query || '*' ,
}
},
"filter": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"gte": timeFrom,
"lte": timeTo
}
}
}
],
"must_not": [
]
}
}
}
}
};
query.aggs = {
"date_histogram": {
"date_histogram": {
"interval": target.interval || "$interval",
"field": target.timeField,
"min_doc_count": 0,
"extended_bounds": {
"min": timeFrom,
"max": timeTo
}
}
}
};
query = JSON.stringify(query);
return query;
};
ElasticQueryBuilder.prototype._buildRangeFilter = function(target) {
var filter = {"range":{}};
filter["range"][target.timestampField] = {
"gte": "$rangeFrom",
"lte": "$rangeTo"
};
return filter;
};
ElasticQueryBuilder.prototype._buildTermFilter = function(target) {
var filter = {"term":{}};
filter["term"][target.termKey] = target.termValue;
return filter;
};
return ElasticQueryBuilder;
});