我正在寻找类似于MySQL(SHOW INDEXES)的东西。我能够在Python中使用py2neo获取索引列表
graphDB = neo4j.GraphDatabaseService()
indexes = graphDB.get_indexes(neo4j.Node)
print(format(indexes))
但我想知道是否有办法在Cypher中做类似的事情。
答案 0 :(得分:50)
还没有。在Neo4j 2.0中引入了更多的密码友好索引,您可以发出一些DDL命令来创建和删除索引和约束,但是从2.01开始就是这样(参见docs)。在1.9中,您无法使用cypher定义该类型的模式。
-
除了密码之外还有很多方法,例如
在neo4j-shell
你可以
index --indexes
schema
schema ls -l :YourLabel
在neo4j-browser
你可以
:schema
:schema ls -l :YourLabel
大多数允许您执行密码查询的API也将提供查询模式的方法,例如
GraphDatabaseService.schema().getConstraints()
和.getIndexes()
GraphDatabaseService.index().nodeIndexNames()
和.relationshipIndexNames()
/db/data/schema/
个端点/db/data/index/node/
和/db/data/index/relationship/
答案 1 :(得分:34)
:schema
命令怎么样? (在Neo4j shell中,它只是schema
)。
在Neo4j 2.0.1中为我的魅力工作
答案 2 :(得分:26)
neo4j 3.1现在支持这个作为内置程序,你可以从Cypher打电话:
CALL db.indexes();
http://neo4j.com/docs/operations-manual/3.1/reference/procedures/
答案 3 :(得分:3)
嗯,在Cypher你不能这样做,但有一个REST API请求,它可以工作。
您可以在终端中查看。
数据库中的所有索引:
curl http://localhost:7474/db/data/schema/index/
特定标签上的索引:
curl http://localhost:7474/db/data/schema/index/User
答案 4 :(得分:1)
这并不能完全回答你的问题(我也给jjaderberg的答案+1了。)
在py2neo中,标签有一些功能:http://book.py2neo.org/en/latest/schema/
get_index(label)
获取标签的索引属性键列表。
仅供参考,在shell中,您可以使用未记录的schema
命令。
答案 5 :(得分:0)
CALL db.indexes();
如4.2所述,已被新的SHOW INDEXS弃用
SHOW INDEXES