debugrammer / php-graylog-query-builder
Graylog REST API 的查询构建器
1.0.0
2019-11-05 01:30 UTC
Requires
- php: >=7.0.0
Requires (Dev)
- phpunit/phpunit: ~6.5
This package is auto-updated.
Last update: 2024-09-13 08:03:51 UTC
README
PHP版本的Graylog 搜索查询构建器,特别适用于与Graylog REST API一起使用。
入门指南
目前支持PHP版本7.0至PHP 7.4。建议使用composer来安装库。
通过运行composer将php-graylog-query-builder添加到composer.json
$ composer require debugrammer/php-graylog-query-builder
或通过手动定义
"require": {
"debugrammer/php-graylog-query-builder": "~1.0"
}
用法
use GraylogQueryBuilder\GraylogQuery as GraylogQuery;
GraylogQuery::builder()
->field('type', 'ssh')
->and()->exists('id')
->and()->openParen()
->raw('source:(dog.org OR cat.org)')
->closeParen()
->and()->range('http_response_code', '[', 200, 300, ']')
->build();
上述代码片段生成以下字符串。
type:"ssh" AND _exists_:id AND ( source:(dog.org OR cat.org) ) AND http_response_code:[200 TO 300]
构建查询
1. 语句
1.1. 词
包含该词或短语的消息。
用法
GraylogQueryBuilder\GraylogQuery::builder()
->term('ssh')
->build();
输出
"ssh"
1.2. 模糊词
包含相似词或短语的消息。
1.2.1. 默认距离的模糊度
用法
GraylogQueryBuilder\GraylogQuery::builder()
->fuzzTerm('ssh logni')
->build();
输出
"ssh logni"~
1.2.2. 自定义距离的模糊度
用法
GraylogQueryBuilder\GraylogQuery::builder()
->fuzzTerm('ssh logni', 1)
->build();
输出
"ssh logni"~1
1.3. 存在
包含该字段的字段。
用法
GraylogQueryBuilder\GraylogQuery::builder()
->exists('type')
->build();
输出
_exists_:type
1.4. 字段
1.4.1. 字段(字符串)
字段包含该词或短语的字段。
用法
GraylogQueryBuilder\GraylogQuery::builder()
->field('type', 'ssh')
->build();
输出
type:"ssh"
1.4.2. 字段(数字)
字段包含该数字的消息。
用法
GraylogQueryBuilder\GraylogQuery::builder()
->field('http_response_code', 500)
->build();
输出
http_response_code:500
1.4.3. 单侧无界范围查询
字段满足条件的消息。
用法
GraylogQueryBuilder\GraylogQuery::builder()
->opField('http_response_code', '>', 500)
->build();
输出
http_response_code:>500
1.5. 模糊字段
包含相似词或短语的字段。
1.5.1. 默认距离的模糊度
用法
GraylogQueryBuilder\GraylogQuery::builder()
->fuzzField('source', 'example.org')
->build();
输出
source:"example.org"~
1.5.2. 自定义距离的模糊度
用法
GraylogQueryBuilder\GraylogQuery::builder()
->fuzzField('source', 'example.org', 1)
->build();
输出
source:"example.org"~1
1.6. 范围
1.6.1. 范围查询
方括号中的范围是包含的,花括号中的范围是排除的,甚至可以组合使用。
用法
GraylogQueryBuilder\GraylogQuery::builder()
->range('bytes', '{', 0, 64, ']')
->build();
输出
bytes:{0 TO 64]
1.6.2. 日期范围查询
日期需要是UTC。
用法
GraylogQueryBuilder\GraylogQuery::builder()
->range('timestamp', '[', '2019-07-23 09:53:08.175', '2019-07-23 09:53:08.575', ']')
->build();
输出
timestamp:["2019-07-23 09:53:08.175" TO "2019-07-23 09:53:08.575"]
1.6. 原始
原始查询。
用法
GraylogQueryBuilder\GraylogQuery::builder()
->raw('/ethernet[0-9]+/')
->build();
输出
/ethernet[0-9]+/
2. 并列
2.1. 且
用法
GraylogQueryBuilder\GraylogQuery::builder()
->term('ssh')
->and()->term('login')
->build();
输出
"ssh" AND "login"
2.2. 或
用法
GraylogQueryBuilder\GraylogQuery::builder()
->term('ssh')
->or()->term('login')
->build();
输出
"ssh" OR "login"
2.3. 非
用法
GraylogQueryBuilder\GraylogQuery::builder()
->not()->exists('type')
->build();
输出
NOT _exists_:type
3. 括号
用法
GraylogQueryBuilder\GraylogQuery::builder()
->exists('type')
->and()->openParen()
->term('ssh')
->or()->term('login')
->closeParen()
->build();
输出
_exists_:type AND ( "ssh" OR "login" )
高级用法
有时你可能想通过条件动态构建查询。
1. 预加Graylog查询
用法
$query = GraylogQueryBuilder\GraylogQuery::builder()
->not()->exists('type');
GraylogQueryBuilder\GraylogQuery::builder($query)
->and()->term('ssh')
->build();
输出
NOT _exists_:type AND "ssh"
2. 添加Graylog查询
用法
$query = GraylogQueryBuilder\GraylogQuery::builder()
->or()->exists('type');
GraylogQueryBuilder\GraylogQuery::builder()
->term('ssh')
->append($query)
->build();
输出
"ssh" OR _exists_:type