通过RESTAPI在neo4j cypher上创建索引节点
我正在尝试使用以下语法在cypher中创建索引节点:通过RESTAPI在neo4j cypher上创建索引节点,neo4j,cypher,py2neo,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 = n
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,py2neo似乎不再支持
属性
参数(对于未来的用户,索引
将替换为索引名称
) 索引和属性是两件不同的事情
图中似乎有一个节点,其索引名为person
,键/值对UID为:“1”。第一个查询通过其索引获取节点。但索引不是节点的属性。您可以启动webadmin来可视化如何在图形中管理索引
据我所知,文档中没有关于如何使用cypher创建索引的内容,但是您可以轻松地使用restapi来操作它们()。索引和属性是两件不同的事情 图中似乎有一个节点,其索引名为
person
,键/值对UID为:“1”。第一个查询通过其索引获取节点。但索引不是节点的属性。您可以启动webadmin来可视化如何在图形中管理索引
据我所知,文档中没有关于如何使用cypher创建索引的内容,但是您可以轻松地使用restapi来操作它们()。该方法没有被弃用,
properties
参数仍然有效,与以前一样。正如您所确定的,唯一的更改是第一个参数从index
更改为index\u name
文件如下:
请注意,
属性
仅在节点不存在时才实际使用,即在执行“创建”时,而不是在执行“获取”时。否则,现有节点将保持原样。该方法未被弃用,并且属性
参数仍然有效,与以前一样。正如您所确定的,唯一的更改是第一个参数从index
更改为index\u name
文件如下:
请注意,
属性
仅在节点不存在时才实际使用,即在执行“创建”时,而不是在执行“获取”时。否则,现有节点将保持原样。不是start n node:/person/
给出的索引“person”?属性在后面的参数中定义。Py2neo使用引擎盖下的RESTAPI创建索引。是的,上面的查询使用名为person的索引查找键/值对UID:“1”。虽然在实践中,通常创建键/值对来反映节点属性,但据我所知,这并不是必需的。如果你看REST索引文档(),你可以很容易地创建与节点属性无关的键/值索引。我想我不明白——你是说我的语法不是在索引上创建键/值,还是根本不创建节点,或者不在索引节点上创建属性?我的意思是cypher语句只是一个查询。您要做的是创建UNIQUE(),但我不知道是否可以使用cypher对节点进行索引(除非自动索引)。索引“person”不是由start n node:/person/
给出的吗?属性在后面的参数中定义。Py2neo使用引擎盖下的RESTAPI创建索引。是的,上面的查询使用名为person的索引查找键/值对UID:“1”。虽然在实践中,通常创建键/值对来反映节点属性,但据我所知,这并不是必需的。如果你看REST索引文档(),你可以很容易地创建与节点属性无关的键/值索引。我想我不明白——你是说我的语法不是在索引上创建键/值,还是根本不创建节点,或者不在索引节点上创建属性?我的意思是cypher语句只是一个查询。您要做的是创建UNIQUE(),但我不知道是否可以使用cypher对节点进行索引(除非自动索引)。