importar cargar neo4j cypher relationship

cargar - Neo4J relaciones CSV



csv to neo4j (2)

Soy un novato de Neo4J y tengo un CSV simple con direcciones IP de origen y destino. Me gustaría crear una relación entre nodos con las mismas etiquetas.

Algo así como ... source_ip >> ALERTAS >> dest_ip o al revés.

"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

....

Esto funciona bien Mi pregunta es ¿cómo creo la relación entre las etiquetas dentro de las alertas? Lo intenté y fallé un montón de veces. Supongo que tengo que configurar Nodos separados para Fuente y Dest y luego vincularlos, simplemente no estoy seguro de cómo.

¡Gracias por adelantado!

Paz, Tom


Primero crea una restricción como esta, para garantizar la singularidad y acelerar la operación MERGE .

CREATE CONSTRAINT ON (a:Alert) ASSERT a.ip IS UNIQUE;

Puedes usar tantas instrucciones CREATE como quieras, y luego MERGE la relación, así:

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)

Por cierto, te recomiendo usar MERGE en la mayoría de los lugares para asegurarte de que no termines creando duplicados. En este archivo, una cierta dirección IP puede aparecer varias veces, no desea un nuevo nodo cada vez que se crea, probablemente desee todas las referencias bajo esa dirección IP, por lo tanto, MERGE aquí en lugar de CREATE


Suponiendo que su modelo de gráfico es algo así como

(: fuente) - [: ALERTA] -> (: Destino)

La siguiente consulta Cypher creará esa relación

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})