在现有节点上创建索引 - Neo4J

时间:2016-07-24 15:33:24

标签: java neo4j cypher

我已经使用Cypher创建了1百万个节点,但在创建这些节点期间,我忘记插入INDEX ON来创建索引。

现在,如何为所有节点创建索引? 我尝试使用CREATE INDEX ON :user(userID)并收到了此消息:Added 1 index, statement executed in 32 ms.

但我希望收到一条消息"Added 1000000 indexes ... ",因为我有100万个带有user标签和UserID属性的节点。

1 个答案:

答案 0 :(得分:2)

执行CREATE INDEX时,只创建一个索引。百万条目将成为该指数内的事物。

Cypher索引是在后台构建的;所以当这个命令成功执行时,这意味着索引就在那里,但它可能在一段时间后才完全构建。

See this blog post了解更多细节,特别是这一部分:

  

使用CREATE INDEX ON:Label(property)创建模式索引,例如CREATE INDEX ON:人(姓名)。

     

列出可用的架构索引(和约束)及其状态(POPULATING,ONLINE,FAILED),其中包含:浏览器中的架构或shell中的架构。

     

始终确保您要在操作中使用的索引和约束是ONLINE,否则它们将不会被使用,并且您的查询将会很慢。

我的猜测就是在你执行CREATE INDEX之后,如果要查看索引的状态,你会发现它处于POPULATING状态。