Neo4j - 是否有一个密码查询语法列出(显示)DB中的所有索引?

时间:2013-11-06 00:06:25

标签: neo4j cypher indexing

我正在寻找类似于MySQL(SHOW INDEXES)的东西。我能够在Python中使用py2neo获取索引列表

graphDB = neo4j.GraphDatabaseService()
indexes = graphDB.get_indexes(neo4j.Node)
print(format(indexes))

但我想知道是否有办法在Cypher中做类似的事情。

6 个答案:

答案 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也将提供查询模式的方法,例如

  • Native Java API
      标签架构
    • GraphDatabaseService.schema().getConstraints().getIndexes()
    • 遗留索引
    • GraphDatabaseService.index().nodeIndexNames().relationshipIndexNames()
  • REST调用
      基于标签的架构的
    • /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