web-dev-qa-db-ja.com

Neo4j-DB内のすべてのインデックスをリスト(表示)するための暗号クエリ構文はありますか?

MySQL(SHOW INDEXES)に似たものを探しています。 Pythonでpy2neoを使用してインデックスのリストを取得できました

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

しかし、Cypherで同様のことを行う方法があるかどうかを知りたかったのです。

30
Bryan Mayes

未だに。 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は、次のようなスキーマをクエリする方法も提供します。

  • ネイティブJava API
    • ラベルスキーマのGraphDatabaseService.schema().getConstraints()および.getIndexes()
    • レガシーインデックスの場合はGraphDatabaseService.index().nodeIndexNames()および.relationshipIndexNames()
  • へのREST呼び出し
    • _/db/data/schema/_ラベルベースのスキーマのエンドポイント
    • レガシーインデックスの場合は_/db/data/index/node/_および_/db/data/index/relationship/_
50
jjaderberg

:schemaコマンド? (Neo4jシェルでは、schemaです)。

Neo4j 2.0.1で私の魅力のように動作します

35
TekTimmy

neo4j 3.1は、CypherからCALLできる組み込みプロシージャとしてこれをサポートするようになりました。

CALL db.indexes();

http://neo4j.com/docs/operations-manual/3.1/reference/procedures/

32

さて、Cypherではそれを行うことはできませんが、REST APIリクエストがあります。これは動作します。

ターミナルで確認できます。

データベース内のすべてのインデックス:

curl http://localhost:7474/db/data/schema/index/

特定のラベルのインデックス:

curl http://localhost:7474/db/data/schema/index/User
3

これはあなたの質問にはまったく答えません(jjaderbergの答えも+1しました)。

Py2neoには、ラベルの機能がいくつかあります。 http://book.py2neo.org/en/latest/schema/

get_index(label)ラベルのインデックス付きプロパティキーのリストを取得します。

参考までに、シェルでは、文書化されていないschemaコマンドを使用できます。

1
Eve Freeman