我正在寻找类似于MySQL的(SHOW INDEXES)的功能。我已经使用Python中的py2neo获取了索引列表
graphDB = neo4j.GraphDatabaseService()
indexes = graphDB.get_indexes(neo4j.Node)
print(format(indexes))
但我想知道是否有一种类似的方法可以在Cypher中执行。
现在,neo4j 3.1已经支持将此作为内置过程,您可以从Cypher中调用它:
neo4j 3.1 现在支持将此作为一个内置过程,您可以从 Cypher 中调用该过程:
CALL db.indexes();
http://neo4j.com/docs/operations-manual/3.1/reference/procedures/
目前还没有。在Neo4j 2.0中,引入了更加Cypher友好的索引,并且您可以发出一些DDL命令来创建和删除索引和约束,但截至2.01,就只有这些功能(参见文档)。在1.9中,您无法使用Cypher定义此类模式。
--
除了Cypher之外,还有许多其他方法,例如:
在neo4j-shell
中,您可以
index --indexes
列出旧版索引schema
列出所有标签的索引和约束schema ls -l :YourLabel
列出特定标签的索引和约束在neo4j-browser
中,您可以
:schema
列出所有标签的索引和约束:schema ls -l :YourLabel
列出特定标签的索引和约束大多数允许您执行Cypher查询的API也会提供查询模式的方法,例如:
GraphDatabaseService.schema().getConstraints()
和.getIndexes()
用于标签模式GraphDatabaseService.index().nodeIndexNames()
和.relationshipIndexNames()
用于旧版索引/db/data/schema/
端点/db/data/index/node/
和/db/data/index/relationship/
那么:schema
命令呢?(在Neo4j shell中只需使用schema
)。
在Neo4j 2.0.1中,对我来说运行得非常顺畅。
CALL db.indexes();
在 4.2 版本中,新的 SHOW INDEXES 报告已经弃用了。
SHOW INDEXES
在Cypher中,你无法做到这一点,但有一个可以工作的REST API请求。
你可以在终端中检查它。
数据库中的所有索引:
curl http://localhost:7474/db/data/schema/index/
特定标签上的索引:
curl http://localhost:7474/db/data/schema/index/User
这并不能完全回答你的问题(我也点赞了jjaderberg的答案。)
在py2neo中,有一些关于标签的功能:http://book.py2neo.org/en/latest/schema/
get_index(label)
获取一个标签的索引属性键列表。
FYI,在shell中,你可以使用未记录的schema
命令。