Neo4J服务始终在同一位置不可用。不知道为什么

Neo4J服务始终在同一位置不可用。不知道为什么,neo4j,cypher,Neo4j,Cypher,我有一个系统,当它被部署时,运行许多脚本来填充Neo4J数据库。没有CSV导入,只是创建大量节点和关系的常规查询 我经常(但不总是)在一个特定的脚本中出错,我不知道为什么。那个档案里没有什么不寻常的事 错误: | { Neo4jError: Connection was closed by server | | at captureStacktrace (/code/node_modules/neo4j-driver/lib/v1/result.js:200:15) | at n

我有一个系统,当它被部署时,运行许多脚本来填充Neo4J数据库。没有CSV导入,只是创建大量节点和关系的常规查询

我经常(但不总是)在一个特定的脚本中出错,我不知道为什么。那个档案里没有什么不寻常的事

错误:

| { Neo4jError: Connection was closed by server
|
|     at captureStacktrace (/code/node_modules/neo4j-driver/lib/v1/result.js:200:15)
|     at new Result (/code/node_modules/neo4j-driver/lib/v1/result.js:73:19)
|     at Session._run (/code/node_modules/neo4j-driver/lib/v1/session.js:173:14)
|     at Session.run (/code/node_modules/neo4j-driver/lib/v1/session.js:154:19)
|     at Object.complete (/code/datamigrations/003/0007_yet_another_script.js:34:17)
|     at ReadableStreamStreamer.ChunkStreamer.parseChunk (/code/node_modules/papaparse/papaparse.js:548:18)
|     at ReadableStreamStreamer.<anonymous> (/code/node_modules/papaparse/papaparse.js:857:11)
|     at ReadableStreamStreamer._streamData (/code/node_modules/papaparse/papaparse.js:1817:25)
|     at ReadableStreamStreamer.<anonymous> (/code/node_modules/papaparse/papaparse.js:876:9)
|     at IconvLiteEncoderStream.<anonymous> (/code/node_modules/papaparse/papaparse.js:1817:25) code: 'ServiceUnavailable', name: 'Neo4jError' }

诚然,这是我在这里创作的一大批作品。超过30k个节点。这会导致错误吗?将其分为10k或其他批次是否更好?

是的,使用较小的批次可能会有所帮助

此外,您的查询也可以简化:

   UNWIND $batch as row
   MATCH (e:Episode {issueKey: row.issueKey}), (a:OtherElement)
   WHERE a.id IN row.otherIds
   CREATE (e)-[:ENABLES]->(a)

此外,使用
:插曲(issueKey)
:其他元素(id)
应该可以提高性能。

此查询更短,但它真的更有效吗?首先匹配所有其他元素,然后再过滤掉其中的大部分元素。直接按id匹配不是更有效吗?我肯定会添加索引。我们还没有在所有的标签上建立索引,我只是做了一个测试,证明了它的重要性。这是一个很好的问题,这就是为什么你应该总是做一些查询。有了这两个索引,当我在Neo4J4.0.4上分析我的查询时,我看到两个索引都被使用了。这意味着查询不“匹配所有其他元素”。
   UNWIND $batch as row
   MATCH (e:Episode {issueKey: row.issueKey}), (a:OtherElement)
   WHERE a.id IN row.otherIds
   CREATE (e)-[:ENABLES]->(a)