Elasticsearch: use field configured in query editor as field for date_histogram aggregations (#41258) (#41358)

* Elasticsearch: use field configured in query editor as field for date_histogram aggregations

* add tests

(cherry picked from commit d524dc6108)
This commit is contained in:
Giordano Ricci
2021-11-05 15:43:42 +00:00
committed by GitHub
parent 5350c74b39
commit d2e61e4aba
2 changed files with 40 additions and 1 deletions
@@ -95,7 +95,7 @@ export class ElasticQueryBuilder {
const esAgg: any = {};
const settings = aggDef.settings || {};
esAgg.interval = settings.interval;
esAgg.field = this.timeField;
esAgg.field = aggDef.field || this.timeField;
esAgg.min_doc_count = settings.min_doc_count || 0;
esAgg.extended_bounds = { min: '$timeFrom', max: '$timeTo' };
esAgg.format = 'epoch_millis';
@@ -841,5 +841,44 @@ describe('ElasticQueryBuilder', () => {
expect(serialDiff.lag).toBe(1);
});
describe('date_histogram', () => {
describe('field property', () => {
it('should use timeField from datasource when not specified', () => {
const query = builder.build({
refId: 'A',
metrics: [{ type: 'count', id: '1' }],
timeField: '@timestamp',
bucketAggs: [
{
type: 'date_histogram',
id: '2',
settings: { min_doc_count: '1' },
},
],
});
expect(query.aggs['2'].date_histogram.field).toBe('@timestamp');
});
it('should use field from bucket agg when specified', () => {
const query = builder.build({
refId: 'A',
metrics: [{ type: 'count', id: '1' }],
timeField: '@timestamp',
bucketAggs: [
{
type: 'date_histogram',
id: '2',
field: '@time',
settings: { min_doc_count: '1' },
},
],
});
expect(query.aggs['2'].date_histogram.field).toBe('@time');
});
});
});
});
});