Elasticsearch ESQL 语法参考指南
elasticsearch 项目地址: https://gitcode.com/gh_mirrors/elas/elasticsearch
概述
Elasticsearch 的 ESQL(Elasticsearch SQL)提供了一种强大的查询语言,用于对 Elasticsearch 数据进行检索和分析。本文将详细介绍 ESQL 的基本语法结构、标识符规则、字面量表示以及注释方法,帮助开发者快速掌握 ESQL 的核心语法。
基本语法结构
ESQL 查询由以下部分组成:
- 源命令:指定数据来源,通常是
FROM
命令 - 处理命令序列(可选):一系列通过管道符
|
连接的处理命令
基本语法格式如下:
FROM 索引名称
| 处理命令1
| 处理命令2
查询结果由最后一个处理命令产生的表格决定。
语法风格说明
为了提高可读性,建议每个处理命令独占一行。但 ESQL 也支持单行写法:
FROM 索引名称 | 处理命令1 | 处理命令2
两种写法在功能上完全等价。
标识符规则
标识符(如字段名)在以下情况需要使用反引号(`)包裹:
- 不以字母、下划线(_)或@符号开头
- 包含非字母、数字或下划线的字符
示例:
FROM index
| KEEP `1.field`
当引用使用引号的函数别名时,需要额外转义反引号:
FROM index
| STATS COUNT(`1.field`)
| EVAL my_count = `COUNT(``1.field``)`
字面量表示
ESQL 支持数字和字符串两种字面量。
字符串字面量
字符串由双引号(")包裹:
FROM employees
| WHERE first_name == "张三"
若字符串本身包含引号,可使用转义或三引号语法:
ROW name = "包含\"引号\"的字符串"
ROW name = """包含"引号"的字符串"""
特殊字符支持:
\r
:回车符\n
:换行符\t
:制表符
数字字面量
ESQL 支持多种数字表示形式:
- 整数形式:
1969
- 小数形式:
3.14
或.1234
- 科学计数法:
4E5
或1.2e-3
- 负数形式:
-.1e2
类型转换规则:
- 整数字面量自动转换为能容纳其值的整数类型(integer、long)
- 浮点数字面量自动转换为 double 类型
如需特定类型,可使用类型转换函数。
注释语法
ESQL 支持两种注释风格:
- 单行注释:以
//
开头 - 多行注释:
/*
和*/
包裹
示例:
// 单行注释示例
FROM employees /* 这也是注释 */
| WHERE height > 2
/*
* 多行
* 注释
*/
时间间隔字面量
ESQL 提供了丰富的时间间隔表示方法,支持以下时间单位:
| 单位 | 缩写/别名 | |------|----------| | 毫秒 | 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
1 day
1 day
最佳实践建议
- 对于复杂查询,建议使用多行格式,提高可读性
- 包含特殊字符的字段名务必使用反引号包裹
- 长数字建议使用科学计数法表示
- 复杂查询添加适当注释说明
- 时间间隔优先使用标准单位名称而非缩写
通过掌握这些基础语法规则,开发者可以构建出高效、易读的 ESQL 查询语句,充分发挥 Elasticsearch 的数据处理能力。
elasticsearch 项目地址: https://gitcode.com/gh_mirrors/elas/elasticsearch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考