Elasticsearch: Fix script fields in query editor (#31681)

* Elasticsearch: Fix script fields in query editor

* properly name bucke_script deries
This commit is contained in:
Giordano Ricci
2021-03-05 12:48:45 +00:00
committed by GitHub
parent 54f281d6ed
commit 64a8514e47
7 changed files with 74 additions and 27 deletions

View File

@@ -9,10 +9,12 @@ import {
isMetricAggregationWithSettings,
isPipelineAggregation,
isPipelineAggregationWithMultipleBucketPaths,
MetricAggregation,
MetricAggregationWithInlineScript,
} from './components/QueryEditor/MetricAggregationsEditor/aggregations';
import { defaultBucketAgg, defaultMetricAgg, findMetricById, highlightTags } from './query_def';
import { ElasticsearchQuery } from './types';
import { convertOrderByToMetricId } from './utils';
import { convertOrderByToMetricId, getScriptValue } from './utils';
export class ElasticQueryBuilder {
timeField: string;
@@ -204,8 +206,9 @@ export class ElasticQueryBuilder {
target.metrics = target.metrics || [defaultMetricAgg()];
target.bucketAggs = target.bucketAggs || [defaultBucketAgg()];
target.timeField = this.timeField;
let metric: MetricAggregation;
let i, j, pv, nestedAggs, metric;
let i, j, pv, nestedAggs;
const query = {
size: 0,
query: {
@@ -340,7 +343,9 @@ export class ElasticQueryBuilder {
if (isMetricAggregationWithSettings(metric)) {
Object.entries(metric.settings || {})
.filter(([_, v]) => v !== null)
.forEach(([k, v]) => (metricAgg[k] = v));
.forEach(([k, v]) => {
metricAgg[k] = k === 'script' ? getScriptValue(metric as MetricAggregationWithInlineScript) : v;
});
}
aggField[metric.type] = metricAgg;