nebula-explorer 条件筛选不可用

nebula-explorer-3.1.2.x86_64
nebula版本3.2.0

点信息
vid: “45.155.205.130”
default.timestamp: “1663568762491”

边信息
id: $attack 45.146.164.80->172.18.120.106 @1663568762804
attack.app_proto:
attack.attacker_port: 55278
attack.name: 端口扫描
attack.phase: recon
attack.proto: TCP
attack.result: unknown
attack.severity: 3
attack.tag: 扫描器
attack.timestamp: 1663568091005
其中timestamp是13位时间戳
在通过条件筛选时候会报错

paload
{“gql”:“MATCH p=(v)-[e:attack|:visit*1]-(v2) \nWHERE id(v) IN ["172.18.120.106"] \n AND ALL(l IN e WHERE l.undefined >= undefined) RETURN p LIMIT 100”}

截图,显示500

界面筛选条件方便截图发一下吗

image

刷新页面后还会复现吗?过滤其他属性字段呢?我们用统一的版本试了下,没复现出来这个问题,另外看你报错的请求和截图貌似不是一个状态下的。最好能清空状态后,拓展然后看下报错

应该是可以稳定复现的,其他字段没有问题

测试发现并不是只有timestamp字段筛选不行,其他字段也有可能报错。这是proto字段筛选报错
ErrInternalServer::-1009:SemanticError: Alias used but not defined: `http’

举个例子:这样是报错的

{“gql”:“MATCH p=(v)-[e:attack|:visit*6]-(v2) \nWHERE id(v) IN ["45.155.205.130"] \n AND ALL(l IN e WHERE l.name == HTTP) RETURN p LIMIT 100”}

这样是OK的

{“gql”:“MATCH p=(v)-[e:attack|:visit*6]-(v2) \nWHERE id(v) IN ["45.155.205.130"] \n AND ALL(l IN e WHERE l.name == 222) RETURN p LIMIT 100”}

大概了解了,原因是name这个字段是int类型的,所以对name的过滤值必须是数字。后面我们对这个处理一下,int类型输入非字符串给个提升。
timestamp字段的问题我们再看下原因

对timestamp过滤失败的请求发下看看gql

name字段是string类型 :joy:这是让我疑惑的点。timestamp
这是对timestamp的过滤gql
{“gql”:“MATCH p=(v)-[e:attack|:visit*6]-(v2) \nWHERE id(v) IN [“45.155.205.130”] \n AND ALL(l IN e WHERE l.timestamp == 1663568486473) RETURN p LIMIT 100”}

name我看获取到是Int64,所以才有大于小于号可选。这行ngql我看没毛病,会报错吗?

找到原因了,timestamp是关键字 :expressionless:,所以导致了报错,这个我们下个版本处理下关键字,感谢发现了这个BUG

name是string类型,在查询的时候需要加双引号。

可以考虑在文档中列一下关键字列表,因为我在创建tag和边的时候也遇到过因为关键字导致创建失败的问题,所以我把所有的属性都加了``作识别。

我们会同步文档同学。感谢反馈 :fist_left:

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。