通过rest api在neo4j cypher上创建索引节点

时间:2013-04-18 03:24:07

标签: neo4j cypher py2neo

我正在尝试使用以下语法在cypher中创建索引节点:

neo4j-sh (?)$ start m=node:person(UID= "1")  return m;
==> +------------+
==> | m          |
==> +------------+
==> | Node[64]{} |
==> +------------+
==> 1 row
==> 0 ms
==> 
neo4j-sh (?)$ start n = node(64) return n.UID;
==> EntityNotFoundException: The property 'UID' does not exist on Node[64]

为什么节点似乎是创建的,但是我正在创建的属性,似乎已成功返回,不存在?

有更简单的方法吗?我以前使用py2neo的功能:

neo4j.GraphDatabaseService("http://localhost:7474/db/data/").get_or_create_indexed_node(index='person', key='UID', value=self.id, properties={'UID' : self.id})

但这似乎已经被弃用了 - 它不再适用于最新版本的py2neo,它似乎不再支持properties参数(对于未来的人,index被替换为index_name)。

2 个答案:

答案 0 :(得分:2)

索引和属性是两回事。

您的图表中似乎有一个名为person的索引和键/值对UID:“1”的节点。您的第一个查询通过其索引获取您的节点。但索引不是节点的属性。您可以启动webadmin以可视化图表中索引的管理方式。

据我所知,文档中没有关于如何使用cypher创建索引的内容,但您可以轻松使用REST API来操作它们(link)。

答案 1 :(得分:1)

该方法尚未弃用,properties参数仍然有效,如前所述。正如您所确定的,唯一的变化是第一个参数从indexindex_name的变化。

文档在这里:

http://book.py2neo.org/en/latest/graphs_nodes_relationships.html#py2neo.neo4j.GraphDatabaseService.get_or_create_indexed_node

请注意,properties仅在节点尚不存在时才会被实际使用,即在执行'create'时,而不是在执行'get'时。否则,现有节点将保持原样。