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
时间跨度字面量
编辑可以使用时间跨度字面量表示日期时间间隔和时间跨度。时间跨度字面量是数字和时间单位的组合。支持的时间单位在时间跨度单位中列出。有关时间跨度用法的更多示例,请参见在 ES|QL 中使用时间跨度。
时间跨度字面量对空格不敏感。以下表达式都是有效的
-
1day
-
1 day
-
1 day