ES|QL 语法参考
编辑ES|QL 语法参考编辑
基本语法编辑
ES|QL 查询由一个 源命令 后跟一系列可选的 处理命令 组成,它们之间用管道字符分隔:|
。例如
source-command | processing-command1 | processing-command2
查询的结果是由最终处理命令生成的表。
有关所有受支持的命令、函数和运算符的概述,请参阅 命令 和 函数和运算符。
为了便于阅读,本文档将每个处理命令放在新的一行。但是,您可以将 ES|QL 查询写成一行。以下查询与前一个查询相同
source-command | processing-command1 | processing-command2
标识符编辑
标识符需要用反引号 (`
) 引起来,如果
- 它们不是以字母、
_
或@
开头 - 任何其他字符不是字母、数字或
_
例如
FROM index | KEEP `1.field`
当引用本身使用带引号标识符的函数别名时,带引号标识符的反引号需要用另一个反引号转义。例如
FROM index | STATS COUNT(`1.field`) | EVAL my_count = `COUNT(``1.field``)`
字面量编辑
ES|QL 当前支持数字和字符串字面量。
字符串字面量编辑
字符串字面量是由双引号 ("
) 分隔的 Unicode 字符序列。
// Filter by a string value FROM index | WHERE first_name == "Georgi"
如果字面量字符串本身包含引号,则需要对其进行转义 (\\"
)。为了方便起见,ES|QL 还支持三引号 ("""
) 分隔符
ROW name = """Indiana "Indy" Jones"""
特殊字符 CR、LF 和 TAB 可以使用通常的转义符提供:\r
、\n
、\t
。
数字字面量编辑
数字字面量可以使用十进制和科学计数法表示,并使用指数标记(e
或 E
),以数字、小数点 .
或负号 -
开头
1969 -- integer notation 3.14 -- decimal notation .1234 -- decimal notation starting with decimal point 4E5 -- scientific notation (with exponent marker) 1.2e-3 -- scientific notation with decimal point -.1e2 -- scientific notation starting with the negative sign
整数数字字面量会隐式转换为 integer
、long
或 double
类型,以首先可以容纳字面量值的类型为准。
浮点数字面量会隐式转换为 double
类型。
要获取不同类型的常量值,请使用数字 转换函数 之一。
注释编辑
ES|QL 使用 C++ 风格的注释
- 双斜杠
//
用于单行注释 -
/*
和*/
用于块注释
// Query the employees index FROM employees | WHERE height > 2
FROM /* Query the employees index */ employees | WHERE height > 2
FROM employees /* Query the * employees * index */ | WHERE height > 2
时间跨度字面量编辑
可以使用时间跨度字面量来表示日期时间间隔和时间跨度。时间跨度字面量是数字和限定符的组合。支持以下限定符
-
millisecond
/milliseconds
-
second
/seconds
-
minute
/minutes
-
hour
/hours
-
day
/days
-
week
/weeks
-
month
/months
-
year
/years
时间跨度字面量对空格不敏感。以下表达式均有效
-
1day
-
1 day
-
1 day