2016-07-26 30 views
0

我已经将100K节点导入到Neo4J中,现在我想检索这些节点的名称值。Cypher查询中小型数据集崩溃

我的节点有2个属性(idname)和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秒检查内存使用情况。结果在下面的图片中。

enter image description here

我工作平庸的机器上的RAM,Ubuntu的14和i5 CPU 4GB但要求30000个节点似乎并不大求我。

也许我在错误地调整我的机器。

在我的Neo4j-wrapper.conf文件我有:

dbms.memory.heap.initial_size=2048 
dbms.memory.heap.max_size=2048 

虽然我neo4j.conf:

#dbms.memory.pagecache.size=2g  
+0

你交换,因为4 GB不是为OS +的Neo4j +浏览器那么大。你想在浏览器中显示30K行吗?无论是触及交换将减慢爬行...... –

+0

是的,我试图在浏览器中显示所有30000行。我能做些什么(除了安装更多内存)? neo4j调音在这种情况下是无价值的吗? – splunk

+1

这是Web界面的问题,它只是没有设计*显示*大量的数据。尝试使用程序/脚本获取数据。 –

回答

0

如果你只是想获得30K的名称(或者甚至全部100K)在浏览器的JSON文档中,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)"}