MATCH p=(n)-[*3]->(m) WHERE id(m) == '39f1e6f***d2c4b06e2' WITH DISTINCT id(n) AS startNodeId, p MATCH (n)-[r]->(o) WHERE id(n) == startNodeId RETURN id(n), p, r, o LIMIT 600;
复制代码
2)通过属性(时间、ip等)查询节点信息;
MATCH (rt:ResourceTopology {ip:"75.234.9.39"}) RETURN rt;
或
MATCH (rt:ResourceTopology ) WHERE rt.ResourceTopology.ip == "75.234.9.39" RETURN rt;
复制代码
或
LOOKUP ON ResourceTopology WHERE ResourceTopology.ip =="75.234.9.39" YIELD id(vertex) as vid,ResourceTopology.ip,ResourceTopology.app_id,ResourceTopology.creation_time;
MATCH (rt:ResourceTopology) WHERE rt.ResourceTopology.creation_time >= datetime("2023-08-21T16:51:39.000000") AND rt.ResourceTopology.creation_time <= datetime("2023-10-21T17:21:39.000000") RETURN rt;
MATCH p = shortestPath((a:AlarmTag{ip:"75.234.23.167"})-[e*..5]-(b:ResourceTopology)) WHERE id(b) == "1a5a0a0b74416***53ca07a35" RETURN p;
或
MATCH p = shortestPath((a)-[e*..5]-(b:ResourceTopology)) WHERE id(a) == "39f1e6f80f75bd1fc48e928d2c4b06e3" AND id(b) == "1a5a0a0b74416a3b624500853ca07a35"RETURN p;
复制代码
4)搜刮一个节点范例关联的其他范例的节点查询
MATCH p = (startNode:ResourceTopology)-[*1..10]->(endNode:AlarmTag) WHERE id(startNode) == '00024bd***4f2058'
RETURN p;
复制代码
报错:Error found in optimization stage: IndexNotFound: No valid index found
nebula查询具体属性的话需要先对该属性建立索引,
1)给AlarmTag范例节点的ip创建索引 CREATE TAG INDEX IF NOT EXISTS ip_index_1 ON AlarmTag(ip(20));
2)加载生效 REBUILD TAG INDEX ip_index_1;
3)SHOW JOB 8;查看结果
构建的索引可以在页面schema里查看:
大概creation_time不带括号,数字一样平常不需要括号,字符串需要:
CREATE TAG INDEX IF NOT EXISTS creation_index_1 ON ResourceTopology(creation_time);
REBUILD TAG INDEX creation_index_1;
MATCH (rt:ResourceTopology) WHERE rt.ResourceTopology.creation_time >= datetime("2023-10-16T14:51:39.000000") AND rt.ResourceTopology.creation_time <= datetime("2023-10-16T17:21:39.000000") RETURN rt;
复制代码
这里timestamp NebulaGraph只有10位,生存表里不止10位这里*1000
MATCH (rt:AlarmTag ) WHERE rt.AlarmTag.alarm_time <= timestamp("2024-06-15T06:18:43")*1000 RETURN rt;
复制代码
代码:
from nebula3.gclient.net import ConnectionPool
from nebula3.Config import Config
config = Config() # 定义一个配置
config.max_connection_pool_size = 10 # 设置最大连接数
connection_pool = ConnectionPool() # 初始化连接池
# 如果给定的服务器是ok的,返回true,否则返回false
ok = connection_pool.init([('192.1**', 9669)], config)