我已将100K节点导入Neo4J,现在我想检索这些节点的名称值。
我的节点有2个属性(id
和name
)和1个标签(User
)。
我在具有User
标签和name
属性的节点上创建了索引。
:schema
Indexes
ON :User(name) ONLINE
No constraints
我运行了这个密码查询:
MATCH (n:User)
RETURN n.name
LIMIT 1000
并在几毫秒内返回结果。
然后我尝试检索30000个节点,更改限制:
MATCH (n:User)
RETURN n.name
LIMIT 30000
每当我尝试执行此查询时页面崩溃。我尝试使用free -m每5秒检查一次内存使用情况。结果如下图所示。
我正在使用4GB内存,Ubuntu 14和i5 CPU的平庸机器,但要求30000个节点对我来说似乎不是一个大要求。
也许我正在以错误的方式调整我的机器。
在我的neo4j-wrapper.conf文件中,我有:
dbms.memory.heap.initial_size=2048
dbms.memory.heap.max_size=2048
在我的neo4j.conf中:
#dbms.memory.pagecache.size=2g
答案 0 :(得分:0)
如果您只想从浏览器获取JSON文档中的30K名称(甚至全部是100K),那么REST API可以在不使用浏览器内存不足的情况下执行此操作。
在浏览器中尝试此操作:
:POST /db/data/cypher {"query" : "MATCH (n:User) RETURN n.name LIMIT 30000"}
浏览器只显示部分结果,但您可以从结果面板右上角的下载图标下载JSON格式的结果。
要在更紧凑的JSON文档中获取所有名称,您可以改为:
:POST /db/data/cypher {"query" : "MATCH (n:User) RETURN COLLECT(n.name)"}