2015-07-01 07:54:06 -05:00
|
|
|
define([
|
|
|
|
],
|
|
|
|
function () {
|
|
|
|
'use strict';
|
|
|
|
|
2015-09-02 10:45:41 -05:00
|
|
|
function ElasticQueryBuilder() { }
|
2015-07-01 07:54:06 -05:00
|
|
|
|
2015-09-03 01:18:00 -05:00
|
|
|
ElasticQueryBuilder.prototype.build = function(target, timeFrom, timeTo) {
|
|
|
|
if (target.rawQuery) {
|
|
|
|
return angular.fromJson(target.rawJson);
|
|
|
|
}
|
2015-09-02 10:45:41 -05:00
|
|
|
|
2015-09-03 01:18:00 -05:00
|
|
|
var query = {
|
|
|
|
"size": 0,
|
|
|
|
"query": {
|
|
|
|
"filtered": {
|
|
|
|
"query": {
|
|
|
|
"query_string": {
|
|
|
|
"analyze_wildcard": true,
|
|
|
|
"query": target.query || '*' ,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"filter": {
|
|
|
|
"bool": {
|
|
|
|
"must": [
|
|
|
|
{
|
|
|
|
"range": {
|
|
|
|
"@timestamp": {
|
|
|
|
"gte": timeFrom,
|
|
|
|
"lte": timeTo
|
|
|
|
}
|
|
|
|
}
|
2015-08-28 12:06:57 -05:00
|
|
|
}
|
2015-09-03 01:18:00 -05:00
|
|
|
],
|
|
|
|
"must_not": [
|
|
|
|
|
|
|
|
]
|
2015-08-28 12:06:57 -05:00
|
|
|
}
|
2015-07-01 07:54:06 -05:00
|
|
|
}
|
2015-08-31 07:25:05 -05:00
|
|
|
}
|
2015-09-03 01:18:00 -05:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
query.aggs = {
|
|
|
|
"date_histogram": {
|
|
|
|
"date_histogram": {
|
|
|
|
"interval": target.interval || "$interval",
|
|
|
|
"field": target.timeField,
|
|
|
|
"min_doc_count": 0,
|
|
|
|
"extended_bounds": {
|
|
|
|
"min": timeFrom,
|
|
|
|
"max": timeTo
|
2015-09-02 10:45:41 -05:00
|
|
|
}
|
2015-09-03 01:18:00 -05:00
|
|
|
}
|
2015-07-02 14:25:00 -05:00
|
|
|
}
|
2015-09-03 01:18:00 -05:00
|
|
|
};
|
2015-09-02 10:45:41 -05:00
|
|
|
|
2015-07-01 07:54:06 -05:00
|
|
|
query = JSON.stringify(query);
|
|
|
|
return query;
|
|
|
|
};
|
|
|
|
|
2015-07-02 14:25:00 -05:00
|
|
|
ElasticQueryBuilder.prototype._buildRangeFilter = function(target) {
|
|
|
|
var filter = {"range":{}};
|
2015-09-02 10:45:41 -05:00
|
|
|
filter["range"][target.timestampField] = {
|
2015-07-02 14:25:00 -05:00
|
|
|
"gte": "$rangeFrom",
|
|
|
|
"lte": "$rangeTo"
|
|
|
|
};
|
|
|
|
return filter;
|
|
|
|
};
|
|
|
|
|
|
|
|
ElasticQueryBuilder.prototype._buildTermFilter = function(target) {
|
|
|
|
var filter = {"term":{}};
|
|
|
|
filter["term"][target.termKey] = target.termValue;
|
|
|
|
return filter;
|
|
|
|
};
|
|
|
|
|
2015-07-01 07:54:06 -05:00
|
|
|
return ElasticQueryBuilder;
|
|
|
|
});
|