diff --git a/public/app/plugins/datasource/elasticsearch/elastic_response.js b/public/app/plugins/datasource/elasticsearch/elastic_response.js
index 73050ce7f2b..fd53873aa8d 100644
--- a/public/app/plugins/datasource/elasticsearch/elastic_response.js
+++ b/public/app/plugins/datasource/elasticsearch/elastic_response.js
@@ -76,8 +76,12 @@ function (_, queryDef) {
newSeries = { datapoints: [], metric: metric.type, field: metric.field, props: props};
for (i = 0; i < esAgg.buckets.length; i++) {
bucket = esAgg.buckets[i];
- value = bucket[metric.id].value;
- newSeries.datapoints.push([value, bucket.key]);
+
+ value = bucket[metric.id];
+ if (value !== undefined) {
+ newSeries.datapoints.push([value.value, bucket.key]);
+ }
+
}
seriesList.push(newSeries);
break;
@@ -193,7 +197,14 @@ function (_, queryDef) {
});
}
- if (series.field) {
+ if (series.field && series.metric === 'moving_avg') {
+ var appliedAgg = _.findWhere(target.metrics, { id: series.field });
+ if (appliedAgg) {
+ metricName += ' ' + queryDef.describeMetric(appliedAgg);
+ } else {
+ metricName = 'Unset';
+ }
+ } else if (series.field) {
metricName += ' ' + series.field;
}
diff --git a/public/app/plugins/datasource/elasticsearch/metric_agg.js b/public/app/plugins/datasource/elasticsearch/metric_agg.js
index c4e04dad325..1d6f82a292f 100644
--- a/public/app/plugins/datasource/elasticsearch/metric_agg.js
+++ b/public/app/plugins/datasource/elasticsearch/metric_agg.js
@@ -13,14 +13,21 @@ function (angular, _, queryDef) {
$scope.metricAggTypes = queryDef.metricAggTypes;
$scope.extendedStats = queryDef.extendedStats;
+ $scope.mavgOptions = [];
$scope.init = function() {
$scope.agg = metricAggs[$scope.index];
$scope.validateModel();
+ $scope.updateMavgOptions();
+ };
+
+ $scope.updateMavgOptions = function() {
+ $scope.mavgOptions = queryDef.getMovingAverageOptions($scope.target);
};
$rootScope.onAppEvent('elastic-query-updated', function() {
$scope.index = _.indexOf(metricAggs, $scope.agg);
+ $scope.updateMavgOptions();
$scope.validateModel();
}, $scope);
@@ -35,6 +42,12 @@ function (angular, _, queryDef) {
}
switch($scope.agg.type) {
+ case 'moving_avg': {
+ $scope.agg.pipelineAgg = $scope.agg.pipelineAgg || 'Metric to apply moving average';
+ $scope.settingsLinkText = 'Moving average options';
+ $scope.agg.field = $scope.agg.pipelineAgg;
+ break;
+ }
case 'percentiles': {
$scope.agg.settings.percents = $scope.agg.settings.percents || [25,50,75,95,99];
$scope.settingsLinkText = 'values: ' + $scope.agg.settings.percents.join(',');
@@ -65,6 +78,11 @@ function (angular, _, queryDef) {
$scope.toggleOptions = function() {
$scope.showOptions = !$scope.showOptions;
+ $scope.updateMavgOptions();
+ };
+
+ $scope.onChangeInternal = function() {
+ $scope.onChange();
};
$scope.onTypeChange = function() {
diff --git a/public/app/plugins/datasource/elasticsearch/partials/metricAgg.html b/public/app/plugins/datasource/elasticsearch/partials/metricAgg.html
index 65030af5655..7c21e64721e 100644
--- a/public/app/plugins/datasource/elasticsearch/partials/metricAgg.html
+++ b/public/app/plugins/datasource/elasticsearch/partials/metricAgg.html
@@ -7,7 +7,7 @@