Commit ada9bfca by Mauro Stettler

keep track of elastic search version and generate query according to version

parent 1fa8b745
...@@ -24,6 +24,12 @@ function (angular, _, config) { ...@@ -24,6 +24,12 @@ function (angular, _, config) {
{name: 'Yearly', value: 'Yearly', example: '[logstash-]YYYY'}, {name: 'Yearly', value: 'Yearly', example: '[logstash-]YYYY'},
]; ];
$scope.elasticsearchVersions = [
{name: '0.x', value: 0},
{name: '1.x', value: 1},
{name: '2.x', value: 2},
];
$scope.init = function() { $scope.init = function() {
$scope.isNew = true; $scope.isNew = true;
$scope.datasources = []; $scope.datasources = [];
......
...@@ -23,9 +23,11 @@ function (angular, _, moment, kbn, ElasticQueryBuilder, IndexPattern, ElasticRes ...@@ -23,9 +23,11 @@ function (angular, _, moment, kbn, ElasticQueryBuilder, IndexPattern, ElasticRes
this.name = datasource.name; this.name = datasource.name;
this.index = datasource.index; this.index = datasource.index;
this.timeField = datasource.jsonData.timeField; this.timeField = datasource.jsonData.timeField;
this.elasticsearchVersion = datasource.jsonData.elasticsearchVersion;
this.indexPattern = new IndexPattern(datasource.index, datasource.jsonData.interval); this.indexPattern = new IndexPattern(datasource.index, datasource.jsonData.interval);
this.queryBuilder = new ElasticQueryBuilder({ this.queryBuilder = new ElasticQueryBuilder({
timeField: this.timeField timeField: this.timeField,
elasticsearchVersion: this.elasticsearchVersion
}); });
} }
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
</ul> </ul>
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
<div class="tight-form last"> <div class="tight-form">
<ul class="tight-form-list"> <ul class="tight-form-list">
<li class="tight-form-item" style="width: 144px"> <li class="tight-form-item" style="width: 144px">
Time field name Time field name
...@@ -31,3 +31,14 @@ ...@@ -31,3 +31,14 @@
</ul> </ul>
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
<div class="tight-form last">
<ul class="tight-form-list">
<li class="tight-form-item" style="width: 144px">
Elasticsearch version
</li>
<li>
<select class="input-medium tight-form-input" ng-model="current.jsonData.elasticsearchVersion" ng-options="f.value as f.name for f in elasticsearchVersions"></select>
</li>
</ul>
<div class="clearfix"></div>
</div>
...@@ -6,11 +6,18 @@ function (angular) { ...@@ -6,11 +6,18 @@ function (angular) {
function ElasticQueryBuilder(options) { function ElasticQueryBuilder(options) {
this.timeField = options.timeField; this.timeField = options.timeField;
this.elasticsearchVersion = options.elasticsearchVersion;
} }
ElasticQueryBuilder.prototype.getRangeFilter = function() { ElasticQueryBuilder.prototype.getRangeFilter = function() {
var filter = {}; var filter = {};
filter[this.timeField] = {"gte": "$timeFrom", "lte": "$timeTo"}; filter[this.timeField] = {"gte": "$timeFrom", "lte": "$timeTo"};
// elastic search versions above 2.0 require the time format to be specified
if (this.elasticsearchVersion >= 2) {
filter[this.timeField]["format"] = "epoch_millis";
}
return filter; return filter;
}; };
...@@ -129,6 +136,10 @@ function (angular) { ...@@ -129,6 +136,10 @@ function (angular) {
"min_doc_count": 0, "min_doc_count": 0,
"extended_bounds": { "min": "$timeFrom", "max": "$timeTo" } "extended_bounds": { "min": "$timeFrom", "max": "$timeTo" }
}; };
// elastic search versions above 2.0 require the time format to be specified
if (this.elasticsearchVersion >= 2) {
esAgg["date_histogram"]["format"] = "epoch_millis";
}
break; break;
} }
case 'filters': { case 'filters': {
......
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