From b24c539206af8fc6aa6134a62cbea0aaab8e87f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Sat, 5 Sep 2015 20:22:54 +0200 Subject: [PATCH] feat(elasticsearch): began work on supporting extended stats metric agg, it gives you standard deviation and more --- .../datasource/elasticsearch/datasource.js | 9 +++++++++ .../datasource/elasticsearch/metricAgg.js | 20 +++++++++++++------ .../datasource/elasticsearch/queryDef.js | 2 +- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/public/app/plugins/datasource/elasticsearch/datasource.js b/public/app/plugins/datasource/elasticsearch/datasource.js index ed5658d0e49..a134ea264fe 100644 --- a/public/app/plugins/datasource/elasticsearch/datasource.js +++ b/public/app/plugins/datasource/elasticsearch/datasource.js @@ -213,6 +213,15 @@ function (angular, _, config, kbn, moment, ElasticQueryBuilder) { } break; } + case 'extended_stats': { + var stats = bucket[metric.id]; + + for (var statIndex in metric.stats) { + var statName = metric.stats[statIndex]; + addMetricPoint(seriesName + ' ' + statName, stats[statName], bucket.key) + } + break; + } default: { seriesName += ' ' + metric.field + ' ' + metric.type; value = bucket[metric.id].value; diff --git a/public/app/plugins/datasource/elasticsearch/metricAgg.js b/public/app/plugins/datasource/elasticsearch/metricAgg.js index ef96c2600f6..8f4901bde38 100644 --- a/public/app/plugins/datasource/elasticsearch/metricAgg.js +++ b/public/app/plugins/datasource/elasticsearch/metricAgg.js @@ -20,22 +20,29 @@ function (angular, _, queryDef) { $rootScope.onAppEvent('elastic-query-updated', function() { $scope.index = _.indexOf(metricAggs, $scope.agg); - - $scope.isFirst = $scope.index === 0; - $scope.isSingle = metricAggs.length === 1; $scope.validateModel(); }); $scope.validateModel = function() { + $scope.isFirst = $scope.index === 0; + $scope.isSingle = metricAggs.length === 1; + $scope.settingsLinkText = ''; if (!$scope.agg.field) { $scope.agg.field = 'select field'; } - if ($scope.agg.type === 'percentiles') { - $scope.agg.settings.percents = $scope.agg.settings.percents || [25,50,75,95,99]; - $scope.settingsLinkText = 'values: ' + $scope.agg.settings.percents.join(','); + switch($scope.agg.type) { + case 'percentiles': { + $scope.agg.settings.percents = $scope.agg.settings.percents || [25,50,75,95,99]; + $scope.settingsLinkText = 'values: ' + $scope.agg.settings.percents.join(','); + break; + } + case 'extended_stats': { + $scope.agg.stats = $scope.agg.stats || ['std_deviation']; + $scope.settingsLinkText = 'stats: ' + $scope.agg.stats.join(','); + } } } @@ -57,6 +64,7 @@ function (angular, _, queryDef) { }, 0); metricAggs.splice(addIndex, 0, {type: "count", field: "select field", id: (id+1).toString()}); + $scope.onChange(); }; $scope.removeMetricAgg = function() { diff --git a/public/app/plugins/datasource/elasticsearch/queryDef.js b/public/app/plugins/datasource/elasticsearch/queryDef.js index 57b3a3e2e24..428f026e0dc 100644 --- a/public/app/plugins/datasource/elasticsearch/queryDef.js +++ b/public/app/plugins/datasource/elasticsearch/queryDef.js @@ -11,7 +11,7 @@ function (_) { {text: "Sum of", value: 'sum' }, {text: "Max of", value: 'max' }, {text: "Min of", value: 'min' }, - {text: "Standard Deviations", value: 'std_dev' }, + {text: "Extended Stats", value: 'extended_stats' }, {text: "Percentiles", value: 'percentiles' }, ],