Neo4j - y a-t-il une syntaxe de requête cypher pour lister (afficher) tous les index dans la base de données?

je cherche quelque chose de similaire au MySQL ( SHOW INDEXES ). J'ai pu obtenir une liste des 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 à Cypher.

24
demandé sur Bryan Mayes 2013-11-06 04:06:24

5 réponses

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

--

il y a de nombreux moyens en dehors de cypher, par exemple

neo4j-shell vous pouvez

  • listez les indices de legs avec index --indexes
  • liste de tous les indices et contraintes de label avec schema
  • liste des indices et des contraintes pour un label spécifique avec schema ls -l :YourLabel

neo4j-browser vous pouvez

  • liste de toutes les étiquettes des indices et des contraintes avec :schema
  • liste des indices et des contraintes pour un label spécifique avec :schema ls -l :YourLabel

la plupart des API qui vous permettent d'exécuter des requêtes cypher fourniront également des moyens de requête schema, comme

  • Java En Natif API
    • GraphDatabaseService.schema().getConstraints() et .getIndexes() pour le label schéma
    • GraphDatabaseService.index().nodeIndexNames() et .relationshipIndexNames() l'héritage pour les indices
  • appels de REPOS à
    • /db/data/schema/ les points de terminaison pour un label basé schéma
    • et /db/data/index/node/ et /db/data/index/relationship/ l'héritage pour les indices
49
répondu jjaderberg 2014-03-18 16:07:42

Qu'en est-il de la :schema commande? (Dans le Neo4j shell c'est juste schema).

fonctionne comme le charme pour moi dans Neo4j 2.0.1

31
répondu TekTimmy 2016-03-11 07:13:46

neo4j 3.1 supporte maintenant ceci comme une procédure intégrée que vous pouvez appeler à partir de Cypher:

CALL db.indexes();

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

20
répondu Daniel Kitchener 2017-02-07 15:52:25

Eh bien, en Cypher vous ne pouvez pas faire cela, mais il y a une requête REST API, 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
répondu Dmitry Paranyushkin 2014-02-13 18:30:13

cela ne répond pas tout à fait à votre question (I +1'd jjaderberg la réponse aussi.)

Dans py2neo il y a certaines fonctionnalités pour les étiquettes: http://book.py2neo.org/en/latest/schema/

get_index(label) Récupérer une liste de propriété indexée clés pour une étiquette.

pour votre information, dans shell vous pouvez utiliser leschema la commande.

1
répondu Eve Freeman 2013-11-10 18:35:02