Java 如何在neo4j中高效地创建具有关系的非重复节点?

Java 如何在neo4j中高效地创建具有关系的非重复节点?,java,neo4j,Java,Neo4j,我需要创建50000个节点:Person与50个节点:office有一定关系,可以保证:office元素没有重复的元素,但是:Person有 我的代码如下所示: CREATE INDEX ON :office(rc) CREATE INDEX ON :Person(numDoc) USING PERIODIC COMMIT 500 LOAD CSV FROM "file:///path/to/file" AS csvLine MATCH (x:office{ rc:"345421"}) MER

我需要创建50000个节点:Person与50个节点:office有一定关系,可以保证:office元素没有重复的元素,但是:Person有

我的代码如下所示:

CREATE INDEX ON :office(rc)
CREATE INDEX ON :Person(numDoc)
USING PERIODIC COMMIT 500 LOAD CSV FROM 
"file:///path/to/file" AS csvLine
MATCH (x:office{ rc:"345421"})
MERGE (n:Person { numDoc: toint(csvLine[1]) })
CREATE (n) -[:Afil]-> (x)

它实际上是有效的,但需要2小时左右的时间。我想知道一种有效的查询方法

您是否为匹配/合并子句准备了索引

CREATE INDEX ON :Office(rc)
CREATE INDEX ON :Person(numDoc)
另外,在我看来,500的TX大小可能太小了。 你试过把它增加到10000吗

USING PERIODIC COMMIT 10000

另一件你可能想回顾的事情是你的内存设置。您是否有足够的pagecache和heap使Neo4j能够高效运行?

您是否为MATCH/MERGE子句准备了索引

CREATE INDEX ON :Office(rc)
CREATE INDEX ON :Person(numDoc)
另外,在我看来,500的TX大小可能太小了。 你试过把它增加到10000吗

USING PERIODIC COMMIT 10000

另一件你可能想回顾的事情是你的内存设置。您是否有足够的页面缓存和堆让Neo4j高效运行?

请确保拼写/大小写一致。 尝试使用Neo4j 2.3.0

CREATE INDEX ON :Office(rc);

CREATE INDEX ON :Person(numDoc);

// make sure the indexes are online

:schema await

MATCH (x:Office{ rc:"345421"})
LOAD CSV FROM  "file:///path/to/file" AS csvLine
MERGE (n:Person { numDoc: toInt(csvLine[1]) })
CREATE (n) -[:Afil]-> (x);
如果你只创建了5万人和5万个关系,你就不需要定期提交。然后,你可以在前面匹配办公室一次,而不是每行匹配一次


如果查询使用了您创建的索引,您可以通过在查询前加上EXPLAIN来检查查询。

请确保拼写/大小写一致。 尝试使用Neo4j 2.3.0

CREATE INDEX ON :Office(rc);

CREATE INDEX ON :Person(numDoc);

// make sure the indexes are online

:schema await

MATCH (x:Office{ rc:"345421"})
LOAD CSV FROM  "file:///path/to/file" AS csvLine
MERGE (n:Person { numDoc: toInt(csvLine[1]) })
CREATE (n) -[:Afil]-> (x);
如果你只创建了5万人和5万个关系,你就不需要定期提交。然后,你可以在前面匹配办公室一次,而不是每行匹配一次


如果查询使用了您创建的索引,您可以在查询前面加上EXPLAIN来检查查询。

Hmm那么使用索引是减少时间的唯一方法吗?索引如何缩短时间?它是否会生成某种散列或数据结构来存储数据?您使用的是哪个版本的neo4j?@AlessandroNegro 2.3.0我从周一开始使用它。嗯,所以使用索引是减少时间的唯一方法?索引如何缩短时间?它是否会生成某种散列或数据结构来存储数据?您使用的是哪个版本的neo4j?@AlessandroNegro 2.3.0我从周一开始使用它。谢谢!我没注意到我每排都匹配!!创建和索引时,它会将节点存储在某些数据结构中,以加快匹配速度?或者做一些不同的事情。如果你想提高性能,你应该使用批导入器谢谢!我没注意到我每排都匹配!!创建和索引时,它会将节点存储在某些数据结构中,以加快匹配速度?如果你想提高性能,你应该使用批量导入器