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

数字字面量编辑

数字字面量可以使用十进制和科学计数法表示,并使用指数标记(eE),以数字、小数点 . 或负号 - 开头

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

整数数字字面量会隐式转换为 integerlongdouble 类型,以首先可以容纳字面量值的类型为准。

浮点数字面量会隐式转换为 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