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:
@@ -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');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user