数据探索查询语言(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接口VS API VS公共类   无法解析java。lang.ClassNotFoundException:在安卓 studio中找不到类“com.example.安卓.camera2basic.AutoFitTextureView”?   java等待线程正常完成   java在JTable中的prepareRenderer方法中编辑单元格数据是否可行?   java SessionNotCreatedException selenium webdriver   java Android Studio Gradle CreateProcess错误=2   java找不到适用于异常(int)的构造函数   javascript如何在不使用正则表达式的情况下检查输入是否为表情符号?   从JAVA运行ant时,JAVA_HOME变量不正确   long的java min值引发异常   java如何在这段代码中实现侦听器?   带有透明文本的java Android按钮   图像Java扫描仪问题(JFrame)   java模拟输入蒸汽似乎在Junit测试的第一次输入中就被吃掉了   压缩Java Deflater,现在和将来的结果相同(确定性)   java JTable getModel()。setValueAt从数组中删除第一个元素   java我有不同于编译器和计算器的价值   使用C#客户端调用基本身份验证java webservice   java相同类型的多个@Embedded字段在持久化后始终为空