MySQL(SHOW INDEXES)に似たものを探しています。 Pythonでpy2neoを使用してインデックスのリストを取得できました
graphDB = neo4j.GraphDatabaseService()
indexes = graphDB.get_indexes(neo4j.Node)
print(format(indexes))
しかし、Cypherで同様のことを行う方法があるかどうかを知りたかったのです。
未だに。 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/
_:schema
コマンド? (Neo4jシェルでは、schema
です)。
Neo4j 2.0.1で私の魅力のように動作します
neo4j 3.1は、CypherからCALLできる組み込みプロシージャとしてこれをサポートするようになりました。
CALL db.indexes();
http://neo4j.com/docs/operations-manual/3.1/reference/procedures/
さて、Cypherではそれを行うことはできませんが、REST APIリクエストがあります。これは動作します。
ターミナルで確認できます。
データベース内のすべてのインデックス:
curl http://localhost:7474/db/data/schema/index/
特定のラベルのインデックス:
curl http://localhost:7474/db/data/schema/index/User
これはあなたの質問にはまったく答えません(jjaderbergの答えも+1しました)。
Py2neoには、ラベルの機能がいくつかあります。 http://book.py2neo.org/en/latest/schema/
get_index(label)
ラベルのインデックス付きプロパティキーのリストを取得します。
参考までに、シェルでは、文書化されていないschema
コマンドを使用できます。