Neo4j 批量导入和自动索引

Neo4j 批量导入和自动索引,neo4j,Neo4j,我使用批导入将一个非常小的图形(5个节点;3个rel)加载到neo4j2.0 我相信所有的自动索引属性都在neo4j.properties中设置正确: node_auto_indexing=true node_keys_indexable=name,age 以下是我所做的: 1. neo4j stop 2. batch-import 3. neo4j start 4. query: START r=node:node_auto_index(name="Rana") return r 我得到了

我使用批导入将一个非常小的图形(5个节点;3个rel)加载到
neo4j2.0

我相信所有的自动索引属性都在
neo4j.properties
中设置正确:

node_auto_indexing=true
node_keys_indexable=name,age
以下是我所做的:

1. neo4j stop
2. batch-import
3. neo4j start
4. query: START r=node:node_auto_index(name="Rana") return r
我得到了以下密码错误 索引
节点\u自动\u索引
不存在


这里出了什么问题?

在查询索引之前,需要触发索引创建。最简单的方法是:

create (n {name:"a",age:"a"}) delete n;

您只需执行一次,一旦创建了索引,就不会出现错误。

谢谢。但是,现在它报告“返回0行。查询耗时196ms”。然而,数据实际上就在那里。有什么问题吗?如果没有创建索引,那就意味着索引中没有任何数据。启用自动索引不会自动初始化索引(很遗憾)。您可以这样做(如果不执行限制/跳过,请不要在大型图形上执行):
start n=node(*)set n.name=n.name,n.age=n.age节点[0]上不存在属性“name”。我想我需要跳过节点[0]?如何?启用自动索引后,运行单独的cypher命令可以正确地索引数据。我上面所说的似乎是针对批量导入的。除了手动触发索引外,还有一种优雅的处理方法吗?您可以告诉批量导入器创建一个名为node_auto_index的索引,其中包含要索引的字段。这个问题在过去几周的论坛上被提出。要跳过节点[0],可以在cypher命令中执行
where id(n)0
。或者你可以做
where has(n.name)和has(n.age)