Neo4J CSV 关系
Neo4J CSV relationships
我是 Neo4J 新手,我有一个简单的 CSV 文件,其中包含源 IP 和目标 IP。我想在具有相同标签的节点之间建立关系。
类似... source_ip >> 警报 >> dest_ip,或相反。
"dest_ip","source_ip"
"130.102.82.16","54.231.19.32"
"130.102.82.116","114.30.64.11"
"130.102.82.116","114.30.64.11"
...
LOAD CSV WITH HEADERS
FROM "file:///Users/me/Desktop/query_result.csv" AS csvLine
CREATE (alert:Alert { source_ip: csvLine.source_ip, dest_ip: csvLine.dest_ip})
MATCH (n:Alert) RETURN n LIMIT 25
dest_ip 130.102.82.16 source_ip 54.231.19.32
.....
这很好用。我的问题是如何创建警报内标签之间的关系?我试过很多次都失败了。我猜我需要为 Source 和 Dest 设置单独的节点,然后 link 它们,只是不确定如何设置。
提前致谢!
和平,
汤姆
假设您的图形模型类似于
(:source)-[:ALERT]->(:Destination)
以下 Cypher 查询将创建该关系
LOAD CSV WITH HEADERS FROM "file:///Users/me/Desktop/query_result.csv" AS csvLine
CREATE (source:Source { ip: csvLine.source_ip })-[:ALERTS]->(dest:Destination { ip: csvLine.dest_ip})
首先创建一个这样的约束,以保证唯一性并加快MERGE
操作。
CREATE CONSTRAINT ON (a:Alert) ASSERT a.ip IS UNIQUE;
您可以使用任意多的 CREATE
语句,然后 MERGE
关系,如下所示:
LOAD CSV WITH HEADERS
FROM "file:///Users/me/Desktop/query_result.csv" AS csvLine
MERGE (node1:Alert { ip: csvLine.source_ip })
MERGE (node2:Alert { ip: csvLine.dest_ip })
MERGE (node1)-[r:ALERT]->(node2)
顺便说一下,我建议在大多数地方使用 MERGE
以确保您最终不会创建重复项。在这个文件中,某个 IP 地址可能会被多次列出,你不希望每次创建一个新节点,你可能希望所有引用都在那个 IP 地址下,因此这里 MERGE
而不是 CREATE
我是 Neo4J 新手,我有一个简单的 CSV 文件,其中包含源 IP 和目标 IP。我想在具有相同标签的节点之间建立关系。
类似... source_ip >> 警报 >> dest_ip,或相反。
"dest_ip","source_ip"
"130.102.82.16","54.231.19.32"
"130.102.82.116","114.30.64.11"
"130.102.82.116","114.30.64.11"
...
LOAD CSV WITH HEADERS
FROM "file:///Users/me/Desktop/query_result.csv" AS csvLine
CREATE (alert:Alert { source_ip: csvLine.source_ip, dest_ip: csvLine.dest_ip})
MATCH (n:Alert) RETURN n LIMIT 25
dest_ip 130.102.82.16 source_ip 54.231.19.32
.....
这很好用。我的问题是如何创建警报内标签之间的关系?我试过很多次都失败了。我猜我需要为 Source 和 Dest 设置单独的节点,然后 link 它们,只是不确定如何设置。
提前致谢!
和平, 汤姆
假设您的图形模型类似于
(:source)-[:ALERT]->(:Destination)
以下 Cypher 查询将创建该关系
LOAD CSV WITH HEADERS FROM "file:///Users/me/Desktop/query_result.csv" AS csvLine
CREATE (source:Source { ip: csvLine.source_ip })-[:ALERTS]->(dest:Destination { ip: csvLine.dest_ip})
首先创建一个这样的约束,以保证唯一性并加快MERGE
操作。
CREATE CONSTRAINT ON (a:Alert) ASSERT a.ip IS UNIQUE;
您可以使用任意多的 CREATE
语句,然后 MERGE
关系,如下所示:
LOAD CSV WITH HEADERS
FROM "file:///Users/me/Desktop/query_result.csv" AS csvLine
MERGE (node1:Alert { ip: csvLine.source_ip })
MERGE (node2:Alert { ip: csvLine.dest_ip })
MERGE (node1)-[r:ALERT]->(node2)
顺便说一下,我建议在大多数地方使用 MERGE
以确保您最终不会创建重复项。在这个文件中,某个 IP 地址可能会被多次列出,你不希望每次创建一个新节点,你可能希望所有引用都在那个 IP 地址下,因此这里 MERGE
而不是 CREATE