web-dev-qa-db-fra.com

Neo4j - Existe-t-il une syntaxe de requête de chiffrement pour répertorier (afficher) tous les index de la base de données?

Je cherche quelque chose de similaire à MySQL (SHOW INDEXES). J'ai pu obtenir une liste d'index en utilisant py2neo en Python

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

mais je voulais savoir s'il y avait un moyen de faire quelque chose de similaire dans Cypher.

30
Bryan Mayes

Pas encore. Dans Neo4j 2.0, une indexation plus conviviale a été introduite et vous pouvez émettre des commandes DDL pour créer et supprimer des index et des contraintes, mais à partir de 2.01, c'est tout (voir docs ). Dans 1.9, vous ne pouvez pas du tout définir ce type de schéma avec Cypher.

-

Il existe de nombreuses façons en dehors de Cypher, par exemple

Dans neo4j-Shell, Vous pouvez

  • répertorier les index hérités avec index --indexes
  • répertorier tous les indices et contraintes d'étiquette avec schema
  • répertorier les indices et les contraintes pour une étiquette spécifique avec schema ls -l :YourLabel

Dans neo4j-browser, Vous pouvez

  • répertorier tous les indices et contraintes d'étiquette avec :schema
  • répertorier les indices et les contraintes pour une étiquette spécifique avec :schema ls -l :YourLabel

La plupart des API qui vous permettent d'exécuter des requêtes de chiffrement fourniront également des moyens d'interroger le schéma, comme

  • Native Java API
    • GraphDatabaseService.schema().getConstraints() et .getIndexes() pour le schéma d'étiquette
    • GraphDatabaseService.index().nodeIndexNames() et .relationshipIndexNames() pour les anciens indices
  • Appels REST à
    • /db/data/schema/ Points de terminaison pour le schéma basé sur une étiquette
    • et à /db/data/index/node/ et /db/data/index/relationship/ pour les anciens indices
50
jjaderberg

Que dire de la :schema commande? (Dans le shell Neo4j, c'est juste schema).

Fonctionne comme un charme pour moi dans Neo4j 2.0.1

35
TekTimmy

neo4j 3.1 prend désormais en charge cela en tant que procédure intégrée que vous pouvez APPELER depuis Cypher:

CALL db.indexes();

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

32
Daniel Kitchener

Eh bien, dans Cypher, vous ne pouvez pas le faire, mais il y a une demande d'API REST, qui fonctionne.

Vous pouvez le vérifier dans le terminal.

Tous les index de la base de données:

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

Index sur une étiquette spécifique:

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

Cela ne répond pas tout à fait à votre question (j'ai également attribué la mention +1 à jjaderberg.)

Dans py2neo, il existe des fonctionnalités pour les étiquettes: http://book.py2neo.org/en/latest/schema/

get_index(label) Récupère une liste de clés de propriété indexées pour une étiquette.

Pour info, dans Shell, vous pouvez utiliser la commande non documentée schema.

1
Eve Freeman