I'm looking for something similar to the MySQL ( SHOW INDEXES ). I was able to get a list of indexes using py2neo in Python
graphDB = neo4j.GraphDatabaseService()
indexes = graphDB.get_indexes(neo4j.Node)
print(format(indexes))
but I wanted to know if there's a way to do something similar in Cypher.
This doesn't quite answer your question (I +1'd jjaderberg's answer as well.)
In py2neo there is some functionality for labels: http://book.py2neo.org/en/latest/schema/
FYI, in shell you can use the undocumented
schema
command.Well, in Cypher you cannot do that but there's a REST API request, which works.
You can check it in Terminal.
All indexes in the database:
Indexes on a specific label:
neo4j 3.1 now supports this as a built-in procedure that you can CALL from Cypher:
http://neo4j.com/docs/operations-manual/3.1/reference/procedures/
What about the
:schema
command? (In the Neo4j shell it's justschema
).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 canindex --indexes
schema
schema ls -l :YourLabel
In
neo4j-browser
you can:schema
:schema ls -l :YourLabel
Most APIs that let you execute cypher queries will also provide ways to query schema, such as
GraphDatabaseService.schema().getConstraints()
and.getIndexes()
for label schemaGraphDatabaseService.index().nodeIndexNames()
and.relationshipIndexNames()
for legacy indices/db/data/schema/
endpoints for label based schema/db/data/index/node/
and/db/data/index/relationship/
for legacy indices