kiwiz / ecl
ECL
Requires
Requires (Dev)
- codeclimate/php-test-reporter: ^0.3.2
- phpunit/phpunit: ^4.8
This package is not auto-updated.
Last update: 2024-09-23 07:16:15 UTC
README
ECL 是一种简单的查询语言,旨在与生成表格数据的源一起使用。它允许您查询这些源中的数据并进行一些有限的操作。它支持条件语句、循环、变量和注释。几乎肯定存在错误。请报告!
语法
ECL 基于 bash 的 shell 语法。您在这里会发现类似的想法
- 注释(例如:# HACK)。
- 变量(布尔值、整数、浮点数、字符串、数组)。
- 字符串连接(例如:"app"'le'”)。
- 通过
>
和|
进行输出重定向。 - 控制流(
if
和for
)。还有我忘记的一些其他内容。
关于语法的权威来源是语法。为了更容易地了解,可以尝试查看下面的示例。
示例程序
set type="access_log"; # Define the type we want to query
es:logstash _type:$type > res_a; # Query ES for data and store the results into a variable
if `count(res_a) > 0` { # If we got results...
# Load up our results and use it in a follow up query.
# Look for any info_log documents that match any of the `request_uaid`s in our first result set.
load res_a | es:logstash _type:info_log request_uaid:$_.request_uaid;
}
set list=["one","two","three"];
for list {
es:logstash a:$_.value;
}
参考
注释
# This is a comment
语句
集合
set VAR=VALUE
集合语句允许您将基本值分配给变量。没有返回值。
VAR
:变量的名称。VALUE
:设置变量的值。支持布尔值、整数、浮点数、字符串和数组。
示例:set num=10
条件
if `COND` {
BRANCH_A
}
if `COND` {
BRANCH_A
} else {
BRANCH_B
}
if 语句允许您分支执行。它接受一个 ECL 表达式,允许您访问任何全局变量。返回获胜分支的值。
COND
:一个 SEL 表达式。BRANCH_A
:真实分支。BRANCH_B
:虚假分支。
示例:if
true { es:logstash url:"/" } else { es:logstash -url:"/" }
循环
for VAR {
CODE
}
循环语句允许您遍历结果。循环体的每次迭代都会设置 _
变量。返回循环体的值。
VAR
:要遍历的结果。CODE
:要执行的代码块。
示例:for res { count }
命令列表
AAA
AAA | BBB | ...
AAA | BBB | > VAR_A | CCC | DDD > VAR_B
命令列表是一系列要执行的命令。每个命令的输出流向下一个命令,直到到达末尾。您可以将几乎所有命令的输出复制到变量中。如果最终命令的输出没有重定向到变量,则返回最终命令的输出。
AAA
,BBB
,CCC
,DDD
:命令
命令
计数
count
返回结果集的结果计数。
过滤器
filter `EXPR`
使用提供的表达式过滤结果集。
EXPR
:一个 SEL 表达式。
示例:filter
_['level'] == 'info'``
头部
head NUM
返回前 n 个结果。
NUM
:要返回的最大结果数。
示例:head 5
尾部
tail NUM
返回最后 n 个结果。
NUM
:要返回的最大结果数。
示例:tail 5
连接
join:TYPE RES=FIELD+FIELD+...
对两个结果集执行内部连接。
TYPE
:连接类型(内部
,左
,右
)。 RES
:要连接的结果集。FIELD
:连接的字段。
示例:join res_a=request_uaid
映射
map -FIELD
map AAA+BBB=CCC
map FIELD=`EXPR`
map [AAA,BBB,CCC]
映射结果集中的字段名称和值。您可以在单个命令中指定多个子句,并将按顺序执行。
示例:map count=
_ + 3 _type=type -_type
搜索
es:SRC QUERY
es:SRC OPTS QUERY | agg:ATYPE AFIELD AOPTS
返回 ES 的数据。支持 ES2.x-ES6.x
SRC
:源(通常为 logstash
)。OPTS
:搜索选项。QUERY
:查询。ATYPE
:聚合类型。AOPTS
:聚合选项。
支持大多数标准ES语法和一些额外功能
示例:es:logstash _type:info_log | agg:terms ip_addr
排序
sort FIELD,ORD ...
返回排序后的结果。
FIELD
:排序的字段名。ORD
:asc
(升序)或 desc
(降序)。
示例:sort request_time,asc
加载
load AAA
load AAA,BBB,...
加载结果集。
AAA
,BBB
:变量。