Java 在Neo4j中使用cypher加速关系和节点创建

Java 在Neo4j中使用cypher加速关系和节点创建,java,performance,neo4j,cypher,query-performance,Java,Performance,Neo4j,Cypher,Query Performance,我有两个csv文件A和B。 文件A包含7000行6个属性,文件B包含10M行11个属性。 此外,文件A具有用作主键的属性PKA,而文件B具有用作PKA外键的属性FKA 我想通过以下方式将这些文件加载到Neo4j中: 1-为文件a和文件B的每一行插入一个新节点 2-在创建的表示所述主键和外键关系的任何节点之间添加关系 目前,我使用JAVA API使用BatchInserter插入了这些文件,为这些文件的每一行添加了一个节点,并分别为文件a和文件B设置了标签“a”和“B”。 我还为PKA和FKA创建

我有两个csv文件A和B。 文件A包含7000行6个属性,文件B包含10M行11个属性。 此外,文件A具有用作主键的属性PKA,而文件B具有用作PKA外键的属性FKA

我想通过以下方式将这些文件加载到Neo4j中: 1-为文件a和文件B的每一行插入一个新节点 2-在创建的表示所述主键和外键关系的任何节点之间添加关系

目前,我使用JAVA API使用BatchInserter插入了这些文件,为这些文件的每一行添加了一个节点,并分别为文件a和文件B设置了标签“a”和“B”。 我还为PKA和FKA创建了两个索引。 为了添加关系,我打算调用以下cypher语句(来自Neo4jShell):


在使用大量数据时,运行MATCH通常非常慢

您可以尝试加快速度,在节点上创建一个新的节点,将每个节点定义为唯一的。虽然创建约束也需要时间,但这可能会影响操作:

CREATE CONSTRAINT ON (a:A) ASSERT a.PKA IS UNIQUE;
CREATE INDEX ON :B(PKB); 

然后,您可以运行匹配,您可以根据第三个CSV文件运行匹配,该文件描述了与您类似的场景

另外,插入关系的操作应该不同,
MATCH(a:a)MATCH(b:b)其中b.FKB=a.PKA创建(a)感谢您的回复!我已经注意到了唯一的限制,但它似乎很慢,而且占用了整个可用内存。现在,我正试图在导入过程中使用import-cypher-shell命令直接设置关系。此命令速度较慢,但最多需要1GB的ram,而且功能更为广泛,有一种方法可以加速此命令?对于速度,如果可以,最好的选择似乎是直接使用。i、 e.避免REST@MichaelHunger我已经用两个匹配语句尝试了您的cypher查询,但它返回null,它只在我的查询中运行。索引已正确加载。请不要忘记在创建关系后删除FKB
-server -XX:+UseConcMarkSweepGC -Xms2000m -Xmx5000m
CREATE CONSTRAINT ON (a:A) ASSERT a.PKA IS UNIQUE;
CREATE INDEX ON :B(PKB);