diff --git a/pkg/tsdb/elasticsearch/models.go b/pkg/tsdb/elasticsearch/models.go index fd5a958fdcf..8f34eecf620 100644 --- a/pkg/tsdb/elasticsearch/models.go +++ b/pkg/tsdb/elasticsearch/models.go @@ -45,6 +45,7 @@ var metricAggType = map[string]string{ "percentiles": "Percentiles", "cardinality": "Unique Count", "moving_avg": "Moving Average", + "moving_fn": "Moving Function", "cumulative_sum": "Cumulative Sum", "derivative": "Derivative", "bucket_script": "Bucket Script", @@ -64,6 +65,7 @@ var extendedStats = map[string]string{ var pipelineAggType = map[string]string{ "moving_avg": "moving_avg", + "moving_fn": "moving_fn", "cumulative_sum": "cumulative_sum", "derivative": "derivative", "bucket_script": "bucket_script", diff --git a/public/app/plugins/datasource/elasticsearch/metric_agg.ts b/public/app/plugins/datasource/elasticsearch/metric_agg.ts index d819bfa28d9..590d11067eb 100644 --- a/public/app/plugins/datasource/elasticsearch/metric_agg.ts +++ b/public/app/plugins/datasource/elasticsearch/metric_agg.ts @@ -44,6 +44,7 @@ export class ElasticMetricAggCtrl { $scope.settingsLinkText = ''; $scope.variablesLinkText = ''; $scope.aggDef = _.find($scope.metricAggTypes, { value: $scope.agg.type }); + $scope.isValidAgg = $scope.aggDef != null; if (queryDef.isPipelineAgg($scope.agg.type)) { if (queryDef.isPipelineAggWithMultipleBucketPaths($scope.agg.type)) { @@ -105,6 +106,13 @@ export class ElasticMetricAggCtrl { $scope.updateMovingAvgModelSettings(); break; } + case 'moving_fn': { + const movingFunctionOptions = queryDef.getPipelineOptions($scope.agg); + _.each(movingFunctionOptions, opt => { + $scope.agg.settings[opt.text] = $scope.agg.settings[opt.text] || opt.default; + }); + break; + } case 'raw_document': case 'raw_data': { $scope.agg.settings.size = $scope.agg.settings.size || 500; @@ -115,7 +123,7 @@ export class ElasticMetricAggCtrl { break; } } - if ($scope.aggDef.supportsInlineScript) { + if ($scope.aggDef?.supportsInlineScript) { // I know this stores the inline script twice // but having it like this simplifes the query_builder const inlineScript = $scope.agg.inlineScript; diff --git a/public/app/plugins/datasource/elasticsearch/partials/metric_agg.html b/public/app/plugins/datasource/elasticsearch/partials/metric_agg.html index 3fc34233e26..ab5f5c5e133 100644 --- a/public/app/plugins/datasource/elasticsearch/partials/metric_agg.html +++ b/public/app/plugins/datasource/elasticsearch/partials/metric_agg.html @@ -10,12 +10,18 @@ -