Neo4J服务始终在同一位置不可用。不知道为什么
我有一个系统,当它被部署时,运行许多脚本来填充Neo4J数据库。没有CSV导入,只是创建大量节点和关系的常规查询 我经常(但不总是)在一个特定的脚本中出错,我不知道为什么。那个档案里没有什么不寻常的事 错误: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
| { 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)