Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4J CSV关系_Neo4j_Cypher_Relationship - Fatal编程技术网

Neo4J CSV关系

Neo4J CSV关系,neo4j,cypher,relationship,Neo4j,Cypher,Relationship,我是一个Neo4J新手,我有一个简单的CSV和源和目标IP。我想在具有相同标签的节点之间创建关系 类似于。。。源ip>>警报>>目标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/Deskt

我是一个Neo4J新手,我有一个简单的CSV和源和目标IP。我想在具有相同标签的节点之间创建关系

类似于。。。源ip>>警报>>目标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设置单独的节点,然后链接它们,只是不确定如何连接

提前谢谢

和平,
Tom

假设您的图形模型类似于

(:源)-[:警报]->(:目标)

下面的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;
您可以使用任意多个
创建
语句,然后
合并
关系,如下所示:

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地址下的所有引用,因此
在此处合并
,而不是
创建

,您可能会通过这种方式获得重复的条目。