Neo4j - Is there a cypher query syntax to list (show) all indexes in DB?
What about the :schema
command? (In the Neo4j shell it's just schema
).
Works like charm for me in Neo4j 2.0.1
Not yet. In Neo4j 2.0 more cypher friendly indexing was introduced and you can issue some DDL commands to create and drop indices and constraints, but as of 2.01 that's it (see docs). In 1.9 you can't define that type of schema with cypher at all.
--
There are many ways outside of cypher, for instance
In neo4j-shell
you can
- list legacy indices with
index --indexes
- list all label indices and constraints with
schema
- list indices and constraints for specific label with
schema ls -l :YourLabel
In neo4j-browser
you can
- list all label indices and constraints with
:schema
- list indices and constraints for specific label with
:schema ls -l :YourLabel
Most APIs that let you execute cypher queries will also provide ways to query schema, such as
- Native Java API
GraphDatabaseService.schema().getConstraints()
and.getIndexes()
for label schemaGraphDatabaseService.index().nodeIndexNames()
and.relationshipIndexNames()
for legacy indices
- REST calls to
/db/data/schema/
endpoints for label based schema- and to
/db/data/index/node/
and/db/data/index/relationship/
for legacy indices
neo4j 3.1 now supports this as a built-in procedure that you can CALL from Cypher:
CALL db.indexes();
http://neo4j.com/docs/operations-manual/3.1/reference/procedures/