From b4c69c48b82c6599b4456a74b054a28b37a00229 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 21 Feb 2023 11:35:47 -0500 Subject: [PATCH] [8.7] Add date_nanos support to Time field (#151374) (#151724) # Backport This will backport the following commits from `main` to `8.7`: - [Add date_nanos support to Time field (#151374)](https://github.com/elastic/kibana/pull/151374) ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) Co-authored-by: Ersin Erdal <92688503+ersin-erdal@users.noreply.github.com> --- .../common/build_sorted_events_query.test.ts | 7 +++++++ .../stack_alerts/common/build_sorted_events_query.ts | 1 + .../rule_types/es_query/lib/fetch_es_query.test.ts | 4 ++++ .../rule_types/es_query/lib/fetch_search_source_query.ts | 9 ++++++++- .../public/common/lib/get_time_options.test.ts | 6 +++++- .../public/common/lib/get_time_options.ts | 2 +- 6 files changed, 26 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/stack_alerts/common/build_sorted_events_query.test.ts b/x-pack/plugins/stack_alerts/common/build_sorted_events_query.test.ts index bac84bd4a4b28..8e53736b23963 100644 --- a/x-pack/plugins/stack_alerts/common/build_sorted_events_query.test.ts +++ b/x-pack/plugins/stack_alerts/common/build_sorted_events_query.test.ts @@ -63,6 +63,7 @@ describe('buildSortedEventsQuery', () => { sort: [ { timefield: { + format: 'strict_date_optional_time||epoch_millis', order: 'asc', }, }, @@ -111,6 +112,7 @@ describe('buildSortedEventsQuery', () => { sort: [ { timefield: { + format: 'strict_date_optional_time||epoch_millis', order: 'asc', }, }, @@ -160,6 +162,7 @@ describe('buildSortedEventsQuery', () => { sort: [ { timefield: { + format: 'strict_date_optional_time||epoch_millis', order: 'asc', }, }, @@ -210,6 +213,7 @@ describe('buildSortedEventsQuery', () => { sort: [ { timefield: { + format: 'strict_date_optional_time||epoch_millis', order: 'asc', }, }, @@ -272,6 +276,7 @@ describe('buildSortedEventsQuery', () => { sort: [ { timefield: { + format: 'strict_date_optional_time||epoch_millis', order: 'asc', }, }, @@ -320,6 +325,7 @@ describe('buildSortedEventsQuery', () => { sort: [ { timefield: { + format: 'strict_date_optional_time||epoch_millis', order: 'desc', }, }, @@ -368,6 +374,7 @@ describe('buildSortedEventsQuery', () => { sort: [ { timefield: { + format: 'strict_date_optional_time||epoch_millis', order: 'asc', }, }, diff --git a/x-pack/plugins/stack_alerts/common/build_sorted_events_query.ts b/x-pack/plugins/stack_alerts/common/build_sorted_events_query.ts index 7b92374b8fb33..5253fb8eb74ee 100644 --- a/x-pack/plugins/stack_alerts/common/build_sorted_events_query.ts +++ b/x-pack/plugins/stack_alerts/common/build_sorted_events_query.ts @@ -80,6 +80,7 @@ export const buildSortedEventsQuery = ({ { [sortField]: { order: sortOrder ?? 'asc', + format: 'strict_date_optional_time||epoch_millis', }, }, ], diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_es_query.test.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_es_query.test.ts index 10e8278f1976a..193f559ce2d62 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_es_query.test.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_es_query.test.ts @@ -130,6 +130,7 @@ describe('fetchEsQuery', () => { sort: [ { '@timestamp': { + format: 'strict_date_optional_time||epoch_millis', order: 'desc', }, }, @@ -194,6 +195,7 @@ describe('fetchEsQuery', () => { sort: [ { '@timestamp': { + format: 'strict_date_optional_time||epoch_millis', order: 'desc', }, }, @@ -258,6 +260,7 @@ describe('fetchEsQuery', () => { sort: [ { '@timestamp': { + format: 'strict_date_optional_time||epoch_millis', order: 'desc', }, }, @@ -349,6 +352,7 @@ describe('fetchEsQuery', () => { sort: [ { '@timestamp': { + format: 'strict_date_optional_time||epoch_millis', order: 'desc', }, }, diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_search_source_query.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_search_source_query.ts index 13f4a49796b6d..e033f9c6ef4a8 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_search_source_query.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_search_source_query.ts @@ -129,7 +129,14 @@ export function updateSearchSource( const searchSourceChild = searchSource.createChild(); searchSourceChild.setField('filter', filters as Filter[]); - searchSourceChild.setField('sort', [{ [timeFieldName]: SortDirection.desc }]); + searchSourceChild.setField('sort', [ + { + [timeFieldName]: { + order: SortDirection.desc, + format: 'strict_date_optional_time||epoch_millis', + }, + }, + ]); searchSourceChild.setField( 'aggs', buildAggregation({ diff --git a/x-pack/plugins/triggers_actions_ui/public/common/lib/get_time_options.test.ts b/x-pack/plugins/triggers_actions_ui/public/common/lib/get_time_options.test.ts index 684253c5acdf5..83d6515bf7831 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/lib/get_time_options.test.ts +++ b/x-pack/plugins/triggers_actions_ui/public/common/lib/get_time_options.test.ts @@ -31,8 +31,12 @@ describe('get_time_options', () => { test('if getTimeFieldOptions return only date type fields', () => { const timeOnlyTypeFields = getTimeFieldOptions([ { type: 'date', name: 'order_date' }, + { type: 'date_nanos', name: 'order_date_nanos' }, { type: 'number', name: 'sum' }, ]); - expect(timeOnlyTypeFields).toMatchObject([{ text: 'order_date', value: 'order_date' }]); + expect(timeOnlyTypeFields).toMatchObject([ + { text: 'order_date', value: 'order_date' }, + { text: 'order_date_nanos', value: 'order_date_nanos' }, + ]); }); }); diff --git a/x-pack/plugins/triggers_actions_ui/public/common/lib/get_time_options.ts b/x-pack/plugins/triggers_actions_ui/public/common/lib/get_time_options.ts index 16a7a8db61301..c20a2385c12c9 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/lib/get_time_options.ts +++ b/x-pack/plugins/triggers_actions_ui/public/common/lib/get_time_options.ts @@ -27,7 +27,7 @@ export const getTimeFieldOptions = ( const options: TimeFieldOptions[] = []; fields.forEach((field: { type: string; name: string }) => { - if (field.type === 'date') { + if (field.type === 'date' || field.type === 'date_nanos') { options.push({ text: field.name, value: field.name,