Elasticsearch EQL 函数参考指南

Elasticsearch EQL 函数参考指南

elasticsearch elasticsearch 项目地址: https://gitcode.com/gh_mirrors/elas/elasticsearch

概述

Elasticsearch 的事件查询语言(EQL)提供了一系列内置函数,用于在查询中进行数据转换和计算。这些函数可以处理字符串、数字、IP地址等多种数据类型,为安全分析、日志查询等场景提供了强大的支持。

数学运算函数

add 函数

add 函数用于计算两个数的和,支持整数和浮点数。

语法

add(<addend>, <addend>)

参数

  • <addend>:必需,可以是整数、浮点数或null。如果任一参数为null,函数返回null

示例

add(4, 5)  // 返回9
add(4, 0.5)  // 返回4.5
add(process.args_count, 5)  // 使用字段值进行计算

divide 函数

divide 函数返回两个数的商,需要注意整数除法的向下取整问题。

重要警告: 当两个参数都是整数时,结果会被向下取整。要避免这种情况,可以将其中一个参数转换为浮点数。

语法

divide(<dividend>, <divisor>)

示例

divide(4, 2)  // 返回2
divide(4, 3)  // 返回1(整数除法)
divide(4, 3.0)  // 返回1.333...(浮点除法)

modulo 函数

modulo 函数返回除法运算的余数。

语法

modulo(<dividend>, <divisor>)

示例

modulo(10, 6)  // 返回4
modulo(10, 5)  // 返回0

multiply 函数

multiply 函数返回两个数的乘积。

语法

multiply(<factor>, <factor>)

示例

multiply(2, 2)  // 返回4
multiply(0.5, 2)  // 返回1

字符串处理函数

between 函数

between 函数从源字符串中提取位于指定左右文本之间的子字符串。

语法

between(<source>, <left>, <right>[, <greedy_matching>])

参数

  • greedy_matching:可选,控制匹配模式(贪婪/非贪婪)

示例

between(file.path, "System32\\", ".exe")  // 返回"cmd"
between~(file.path, "system32\\", ".exe")  // 不区分大小写匹配

concat 函数

concat 函数连接多个值形成字符串。

语法

concat(<value>[, <value>])

示例

concat("process is ", "regsvr32.exe")  // 返回"process is regsvr32.exe"
concat(process.name, " ", 42)  // 连接字段和常量

endsWith 函数

endsWith 函数检查字符串是否以指定子字符串结尾。

语法

endsWith(<source>, <substring>)

示例

endsWith("regsvr32.exe", ".exe")  // 返回true
endsWith~("regsvr32.exe", ".EXE")  // 不区分大小写匹配

indexOf 函数

indexOf 函数返回子字符串在源字符串中的位置。

语法

indexOf(<source>, <substring>[, <start_pos>])

示例

indexOf(url.domain, "d")  // 返回3
indexOf(url.domain, ".", 10)  // 从位置10开始查找

length 函数

length 函数返回字符串的字符长度。

语法

length(<string>)

示例

length("explorer.exe")  // 返回12
length(process.name)  // 返回字段值的长度

网络相关函数

cidrMatch 函数

cidrMatch 函数检查IP地址是否属于指定的CIDR块。

语法

cidrMatch(<ip_address>, <cidr_block>[, ...])

示例

cidrMatch(source.address, "192.168.0.0/16")  // 检查IP是否在指定网段

使用技巧

  1. null处理:大多数函数在遇到null参数时会返回null
  2. 类型转换:注意整数和浮点数运算的区别,必要时进行显式转换
  3. 性能考虑:在大型数据集上使用函数可能会影响查询性能
  4. 字段类型限制:某些函数对字段类型有特定要求,使用时需注意

总结

Elasticsearch的EQL函数为事件查询提供了丰富的处理能力,从基本的数学运算到复杂的字符串处理,再到网络地址匹配,覆盖了常见的数据处理需求。合理使用这些函数可以构建更加强大和灵活的查询条件,提升安全分析和日志检索的效率。

elasticsearch elasticsearch 项目地址: https://gitcode.com/gh_mirrors/elas/elasticsearch

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金斐茉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值