Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add date_nanos support to Time field #151374

Merged
merged 4 commits into from
Feb 21, 2023

Conversation

ersin-erdal
Copy link
Contributor

@ersin-erdal ersin-erdal commented Feb 15, 2023

Fixes: #145855

Time field in rule update/create forms shows only the fields with date data type. This PR adds date_nanos type as well.

To verify:

  • Create an index that has fields with date and date_nanos types.
PUT test-index-date
{
  "mappings": {
    "properties": {
      "date": {
        "type": "date"
      },
      "timestamp": {
        "type": "date_nanos"
      }
    }
  }
}
PUT test-index-date/_bulk?refresh
{ "index" : { "_id" : "1" } }
{ "date": "2023-02-15T18:00:00.000Z", "timestamp": 1676480400000} 
{ "index" : { "_id" : "2" } }
{ "date": "2023-02-15T18:00:00.000Z", "timestamp": 1676480400000 } 
  • Open a Rule create form and select Elasticsearch query
  • Select Query DSL
  • Click on select an index
  • Type the above index name (test-index-date) in Indices to query input
  • Select timestamp from time field
  • Click on Test Query button and expect to see Query matched 2 documents in the last 5m.

@ersin-erdal ersin-erdal added release_note:fix Team:ResponseOps Label for the ResponseOps team (formerly the Cases and Alerting teams) v8.7.0 v8.8.0 labels Feb 15, 2023
@ersin-erdal ersin-erdal marked this pull request as ready for review February 15, 2023 20:25
@ersin-erdal ersin-erdal requested a review from a team as a code owner February 15, 2023 20:25
@elasticmachine
Copy link
Contributor

Pinging @elastic/response-ops (Team:ResponseOps)

@ymao1
Copy link
Contributor

ymao1 commented Feb 16, 2023

When creating and running the ES query rule with the date_nanos timefield, I get this error after a few executions:

[2023-02-16T09:44:13.699-05:00][ERROR][plugins.alerting.es-query] Executing Rule default:.es-query:37dfab10-ae08-11ed-b963-01dc131d57f2 has resulted in Error: Invalid time value - RangeError: Invalid time value
    at Date.toISOString (<anonymous>)
    at tryToParseAsDate (executor.ts:228:31)
    at getValidTimefieldSort (executor.ts:218:22)
    at find (executor.ts:127:35)
    at Array.find (<anonymous>)
    at executor (executor.ts:127:21)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at Object.executor (rule_type.ts:186:14)
    at task_runner.ts:340:28
    at TaskRunnerTimer.runWithTimer (task_runner_timer.ts:49:20)
    at TaskRunner.runRule (task_runner.ts:304:38)
    at TaskRunner.run (task_runner.ts:668:31)
    at TaskManagerRunner.run (task_runner.ts:304:22)

Copy link
Member

@pmuellr pmuellr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Contributor Author

@ersin-erdal ersin-erdal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As i can't test with KQL due to #151609, blocking the merge until the bug is resolved.

@kibana-ci
Copy link
Collaborator

💚 Build Succeeded

Metrics [docs]

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
stackAlerts 80.3KB 80.3KB +49.0B

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
triggersActionsUi 80.4KB 80.4KB +23.0B

History

To update your PR or re-run it, just comment with:
@elasticmachine merge upstream

@ersin-erdal ersin-erdal merged commit 58204cf into elastic:main Feb 21, 2023
@ersin-erdal ersin-erdal deleted the 145855-date-nanos branch February 21, 2023 15:25
kibanamachine pushed a commit to kibanamachine/kibana that referenced this pull request Feb 21, 2023
Fixes: elastic#145855

`Time field` in rule update/create forms shows only the fields with
`date` data type. This PR adds `date_nanos` type as well.

## To verify:

- Create an index that has fields with `date` and `date_nanos` types.
```
PUT test-index-date
{
  "mappings": {
    "properties": {
      "date": {
        "type": "date"
      },
      "timestamp": {
        "type": "date_nanos"
      }
    }
  }
}
```
- Add data with `date` and `date_nanos` data types
Note: You can use
https://www.site24x7.com/tools/time-stamp-converter.html address to
generate date_nanos timestamps with a date you desired.
```
PUT test-index-date/_bulk?refresh
{ "index" : { "_id" : "1" } }
{ "date": "2023-02-15T18:00:00.000Z", "timestamp": 1676480400000}
{ "index" : { "_id" : "2" } }
{ "date": "2023-02-15T18:00:00.000Z", "timestamp": 1676480400000 }
```
- Open a Rule create form and select `Elasticsearch query`
- Select `Query DSL`
- Click on `select an index`
- Type the above index name (test-index-date) in `Indices to query`
input
- Select `timestamp` from time field
- Click on `Test Query` button and expect to see `Query matched 2
documents in the last 5m.`

(cherry picked from commit 58204cf)
@kibanamachine
Copy link
Contributor

💚 All backports created successfully

Status Branch Result
8.7

Note: Successful backport PRs will be merged automatically after passing CI.

Questions ?

Please refer to the Backport tool documentation

kibanamachine added a commit that referenced this pull request Feb 21, 2023
# Backport

This will backport the following commits from `main` to `8.7`:
- [Add date_nanos support to Time field
(#151374)](#151374)

<!--- Backport version: 8.9.7 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sqren/backport)

<!--BACKPORT [{"author":{"name":"Ersin
Erdal","email":"[email protected]"},"sourceCommit":{"committedDate":"2023-02-21T15:25:09Z","message":"Add
date_nanos support to Time field (#151374)\n\nFixes: #145855
\r\n\r\n`Time field` in rule update/create forms shows only the fields
with\r\n`date` data type. This PR adds `date_nanos` type as
well.\r\n\r\n## To verify:\r\n\r\n- Create an index that has fields with
`date` and `date_nanos` types.\r\n```\r\nPUT test-index-date\r\n{\r\n
\"mappings\": {\r\n \"properties\": {\r\n \"date\": {\r\n \"type\":
\"date\"\r\n },\r\n \"timestamp\": {\r\n \"type\": \"date_nanos\"\r\n
}\r\n }\r\n }\r\n}\r\n```\r\n- Add data with `date` and `date_nanos`
data types\r\nNote: You can
use\r\nhttps://www.site24x7.com/tools/time-stamp-converter.html address
to\r\ngenerate date_nanos timestamps with a date you
desired.\r\n```\r\nPUT test-index-date/_bulk?refresh\r\n{ \"index\" : {
\"_id\" : \"1\" } }\r\n{ \"date\": \"2023-02-15T18:00:00.000Z\",
\"timestamp\": 1676480400000} \r\n{ \"index\" : { \"_id\" : \"2\" }
}\r\n{ \"date\": \"2023-02-15T18:00:00.000Z\", \"timestamp\":
1676480400000 } \r\n```\r\n- Open a Rule create form and select
`Elasticsearch query`\r\n- Select `Query DSL`\r\n- Click on `select an
index`\r\n- Type the above index name (test-index-date) in `Indices to
query`\r\ninput\r\n- Select `timestamp` from time field\r\n- Click on
`Test Query` button and expect to see `Query matched 2\r\ndocuments in
the last
5m.`","sha":"58204cf2a0fd2b921d5f5c3e138b725bce1c5229","branchLabelMapping":{"^v8.8.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:fix","Team:ResponseOps","v8.7.0","v8.8.0"],"number":151374,"url":"https://github.com/elastic/kibana/pull/151374","mergeCommit":{"message":"Add
date_nanos support to Time field (#151374)\n\nFixes: #145855
\r\n\r\n`Time field` in rule update/create forms shows only the fields
with\r\n`date` data type. This PR adds `date_nanos` type as
well.\r\n\r\n## To verify:\r\n\r\n- Create an index that has fields with
`date` and `date_nanos` types.\r\n```\r\nPUT test-index-date\r\n{\r\n
\"mappings\": {\r\n \"properties\": {\r\n \"date\": {\r\n \"type\":
\"date\"\r\n },\r\n \"timestamp\": {\r\n \"type\": \"date_nanos\"\r\n
}\r\n }\r\n }\r\n}\r\n```\r\n- Add data with `date` and `date_nanos`
data types\r\nNote: You can
use\r\nhttps://www.site24x7.com/tools/time-stamp-converter.html address
to\r\ngenerate date_nanos timestamps with a date you
desired.\r\n```\r\nPUT test-index-date/_bulk?refresh\r\n{ \"index\" : {
\"_id\" : \"1\" } }\r\n{ \"date\": \"2023-02-15T18:00:00.000Z\",
\"timestamp\": 1676480400000} \r\n{ \"index\" : { \"_id\" : \"2\" }
}\r\n{ \"date\": \"2023-02-15T18:00:00.000Z\", \"timestamp\":
1676480400000 } \r\n```\r\n- Open a Rule create form and select
`Elasticsearch query`\r\n- Select `Query DSL`\r\n- Click on `select an
index`\r\n- Type the above index name (test-index-date) in `Indices to
query`\r\ninput\r\n- Select `timestamp` from time field\r\n- Click on
`Test Query` button and expect to see `Query matched 2\r\ndocuments in
the last
5m.`","sha":"58204cf2a0fd2b921d5f5c3e138b725bce1c5229"}},"sourceBranch":"main","suggestedTargetBranches":["8.7"],"targetPullRequestStates":[{"branch":"8.7","label":"v8.7.0","labelRegex":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v8.8.0","labelRegex":"^v8.8.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/151374","number":151374,"mergeCommit":{"message":"Add
date_nanos support to Time field (#151374)\n\nFixes: #145855
\r\n\r\n`Time field` in rule update/create forms shows only the fields
with\r\n`date` data type. This PR adds `date_nanos` type as
well.\r\n\r\n## To verify:\r\n\r\n- Create an index that has fields with
`date` and `date_nanos` types.\r\n```\r\nPUT test-index-date\r\n{\r\n
\"mappings\": {\r\n \"properties\": {\r\n \"date\": {\r\n \"type\":
\"date\"\r\n },\r\n \"timestamp\": {\r\n \"type\": \"date_nanos\"\r\n
}\r\n }\r\n }\r\n}\r\n```\r\n- Add data with `date` and `date_nanos`
data types\r\nNote: You can
use\r\nhttps://www.site24x7.com/tools/time-stamp-converter.html address
to\r\ngenerate date_nanos timestamps with a date you
desired.\r\n```\r\nPUT test-index-date/_bulk?refresh\r\n{ \"index\" : {
\"_id\" : \"1\" } }\r\n{ \"date\": \"2023-02-15T18:00:00.000Z\",
\"timestamp\": 1676480400000} \r\n{ \"index\" : { \"_id\" : \"2\" }
}\r\n{ \"date\": \"2023-02-15T18:00:00.000Z\", \"timestamp\":
1676480400000 } \r\n```\r\n- Open a Rule create form and select
`Elasticsearch query`\r\n- Select `Query DSL`\r\n- Click on `select an
index`\r\n- Type the above index name (test-index-date) in `Indices to
query`\r\ninput\r\n- Select `timestamp` from time field\r\n- Click on
`Test Query` button and expect to see `Query matched 2\r\ndocuments in
the last 5m.`","sha":"58204cf2a0fd2b921d5f5c3e138b725bce1c5229"}}]}]
BACKPORT-->

Co-authored-by: Ersin Erdal <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release_note:fix Team:ResponseOps Label for the ResponseOps team (formerly the Cases and Alerting teams) v8.7.0 v8.8.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Kibana Alerts: not able to use date_nanos in ES Query
6 participants