数据探索查询语言(DXQL)

dxql的Python项目详细描述


Build Statuscodecov

数据探索查询语言(DXQL)

需要Python 3.7

用法

  1. 将dxql.search.pipeline导入到项目中
  2. 使用管道实例化管道。创建管道(query string
  3. 使用新的管道在一个iterable的dict上使用pipeline.execute(events

示例:

from dxql.search import Pipeline
pipeline = Pipeline.create_pipeline('search ip=192.168.1.10')
results = pipeline.execute(events)

events可以是任何iterable。要搜索文件,只需将打开的文件传递给pipeline.execute()。文件的每一行都将被视为一个事件。

示例:

# myfile.json is a file where each line is a JSON dictionary
with open('myfile.json') as file:
    results = pipeline.execute(file)

搜索

搜索的灵感来自splunk的查询语言。

在本文档的其余部分中,我将交替使用术语“搜索”和“查询”。

查询可以由多个由管道分隔的命令组成(|)。将多命令搜索想象为一个“管道”,其中每个命令依次应用于数据,数据从一个命令馈送到下一个命令,直到管道结束。

有四个命令可用:

一。搜索

search命令允许您使用键值对和修饰符(如ORNOT)过滤数据。它必须是查询中的第一个命令。

用法:

搜索“表达式”…

<;表达式>;

<;比较表达式>;不是<;表达式>;<;表达式>;或<;表达式>;

<;比较表达式>;

<;field>;<;operator>;<;value>;

<;运算符>;

=!=<;<;=>;>;=

示例

从索引检索数据

此搜索将返回geoip索引中的所有数据。

search index=geoip

检索特定IP的地理IP数据

使用OR修饰符为字段指定多个值。

search index=geoip ip=192.168.1.10 OR ip=192.168.1.11

检索除一个IP以外的所有IP的地理IP数据

search index=geoip ip!=192.168.1.15

search index=geoip NOT ip=192.268.1.15

从多个索引检索特定IP的数据

不需要按索引搜索。

search ip=192.168.1.15

上面的搜索将从所有索引返回带有ip=192.168.1.15的数据(在本例中,将返回来自索引geoipip_rdap的数据;在rdap中的事件不包含ip字段)。

2.字段

fields命令允许您只显示希望看到的字段。

用法

字段…

示例

从结果中删除所有字段,除了ipcontinent_name

search index=geoip | fields ip continent_name

三。加入

join命令允许您通过字段(即“按字段”)将数据连接在一起。为by字段共享相同值的每个事件将在一个事件下连接在一起。这允许您连接来自两个不同数据源的数据。

用法

“按字段加入”<;gt;

示例

使用ip_rdaprdap索引将IP与其关联的RDAP数据连接起来:

search index=ip_rdap OR index=rdap | join BY handle

handle是“按字段”,由不同类型的数据共享的字段。

四。预打印

prettyprint命令只能用作搜索中的最后一个命令。它允许您以比普通json blob更漂亮的方式打印结果集。

用法

prettyprint format=<;格式>;

<;格式>;

json表

示例

将结果打印为漂亮的json

使用format=json仍然将每个结果打印为json,但使用换行和缩进。

search index=rdap | prettyprint format=json

将结果打印为表格

使用format=table将结果打印为格式化表。

search index=rdap | prettyprint format=table

如果结果集中有很多字段,则结果将溢出到下一行;因此,建议在重新使用prettyprint format=table。这种情况在将ip_rdaprdap数据连接在一起时尤其会发生。许多IP共享相同的rdap数据,因此IP值将变得非常长。我建议在执行join之前指定您感兴趣的IP。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java什么会导致程序在它似乎拥有的监视器上被阻止?   java Android studio设置视图的背景色   java我可以保存一个文本文件而不给用户修改它的能力吗?   pdfbox PDFBOX2。0:java堆堆栈错误   java是维护和操作AllowList的有效方法   JAVAsql。SQLException:找不到适合jdbc的驱动程序:mysql://localhost:3306/asd性爱   如何使用java。lang.NullPointerException:void 安卓。支持v7。应用程序。ActionBar。setElevation(float)“”在空对象引用上'   java调试空指针异常   java正则表达式,以按令牌的特定匹配项拆分,同时忽略其他匹配项   java为JPanel设置边框上的笔划   并发@Schedule方法的java行为   如何在Java中使用泛型与语言运算符和泛型类扩展数   java Rhino Javascript如何为异常堆栈跟踪标记字符串源   运行可执行jar时发生java错误,无法找到或加载主类