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 当前支持数字和字符串字面量。
编辑

字符串字面量

// Filter by a string value
FROM index
| WHERE first_name == "Georgi"

字符串字面量是由双引号 (") 括起来的一系列 Unicode 字符。

ROW name = """Indiana "Indy" Jones"""

如果字面量字符串本身包含引号,则需要对其进行转义 (\\")。为了方便起见,ES|QL 还支持三引号 (""") 分隔符。

CR、LF 和 TAB 等特殊字符可以使用常规转义字符提供:分别为 \r\n\t
编辑

数值字面量

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

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

整数数值字面量会隐式转换为 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/ms
  • second/seconds/sec/s
  • minute/minutes/min
  • hour/hours/h
  • day/days/d
  • week/weeks/w
  • month/months/mo
  • quarter/quarters/q

year/years/yr/y

  • 时间跨度字面量不区分空格。以下表达式均有效:
  • 1day
  • 1day