ES|QL 时间跨度
编辑ES|QL 时间跨度
编辑时间跨度表示两个日期时间值之间的间隔。目前支持两种类型的时间跨度
-
DATE_PERIOD
指定以年、季度、月、周和天为单位的间隔 -
TIME_DURATION
指定以小时、分钟、秒和毫秒为单位的间隔
时间跨度需要两个元素:一个整数值和一个时间单位。
时间跨度可以与分组函数(如 BUCKET)、标量函数(如 DATE_TRUNC)以及算术运算符(如 +
和 -
)一起使用。可以使用 TO_DATEPERIOD、TO_TIMEDURATION 或强制转换运算符 ::DATE_PERIOD
、::TIME_DURATION
将字符串转换为时间跨度。
在 ES|QL 中使用时间跨度的示例
编辑使用 BUCKET
FROM employees | WHERE hire_date >= "1985-01-01T00:00:00Z" AND hire_date < "1986-01-01T00:00:00Z" | STATS hires_per_week = COUNT(*) BY week = BUCKET(hire_date, 1 week) | SORT week
hires_per_week:long | week:date |
---|---|
2 |
1985-02-18T00:00:00.000Z |
1 |
1985-05-13T00:00:00.000Z |
1 |
1985-07-08T00:00:00.000Z |
1 |
1985-09-16T00:00:00.000Z |
2 |
1985-10-14T00:00:00.000Z |
4 |
1985-11-18T00:00:00.000Z |
使用 DATE_TRUNC
FROM employees | KEEP first_name, last_name, hire_date | EVAL year_hired = DATE_TRUNC(1 year, hire_date)
first_name:keyword | last_name:keyword | hire_date:date | year_hired:date |
---|---|---|---|
Alejandro |
McAlpine |
1991-06-26T00:00:00.000Z |
1991-01-01T00:00:00.000Z |
Amabile |
Gomatam |
1992-11-18T00:00:00.000Z |
1992-01-01T00:00:00.000Z |
Anneke |
Preusig |
1989-06-02T00:00:00.000Z |
1989-01-01T00:00:00.000Z |
使用 +
和/或 -
FROM sample_data | WHERE @timestamp > NOW() - 1 hour
@timestamp:date | client_ip:ip | event_duration:long | message:keyword |
---|
当以字符串格式提供时间跨度作为命名参数时,可以使用 TO_DATEPERIOD
、::DATE_PERIOD
、TO_TIMEDURATION
或 ::TIME_DURATION
将其转换为相应的时间跨度值,用于诸如 +
和/或 -
等算术运算。
POST /_query { "query": """ FROM employees | EVAL x = hire_date + ?timespan::DATE_PERIOD, y = hire_date - TO_DATEPERIOD(?timespan) """, "params": [{"timespan" : "1 day"}] }
当以字符串格式提供时间跨度作为命名参数时,它可以自动转换为分组函数和标量函数中相应的时间跨度值,例如 BUCKET
和 DATE_TRUNC
。
POST /_query { "query": """ FROM employees | WHERE hire_date >= "1985-01-01T00:00:00Z" AND hire_date < "1986-01-01T00:00:00Z" | STATS hires_per_week = COUNT(*) BY week = BUCKET(hire_date, ?timespan) | SORT week """, "params": [{"timespan" : "1 week"}] }
POST /_query { "query": """ FROM employees | KEEP first_name, last_name, hire_date | EVAL year_hired = DATE_TRUNC(?timespan, hire_date) """, "params": [{"timespan" : "1 year"}] }
支持的时间单位
编辑时间单位 | 有效缩写 |
---|---|
年 |
y, yr, years |
季度 |
q, quarters |
月 |
mo, months |
周 |
w, weeks |
天 |
d, days |
小时 |
h, hours |
分钟 |
min, minutes |
秒 |
s, sec, seconds |
毫秒 |
ms, milliseconds |