Cypher allows the creation of indexes over a property for all nodes that have a given label. These indexes are automatically managed and kept up to date by the database whenever the graph is changed.
To create an index on a property for all nodes that have a label, use CREATE
INDEX
ON
. Note that the index is not immediately available, but will be created in the background. See Section 3.7.1, “Indexes” for details.
Query.
CREATE INDEX ON :Person(name) |
Try this query live. create (_0 {`name`:"A"}) create (_1 {`name`:"root"}) create (_2 {`name`:"B"}) create (_3 {`name`:"C"}) create _0-[:`KNOWS`]->_3 create _1-[:`X`]->_0 create _1-[:`X`]->_2 create _1-[:`X`]->_3 create index on :Person(name)
To drop an index on all nodes that have a label, use the DROP
INDEX
clause.
Query.
DROP INDEX ON :Person(name) |
Try this query live. create (_0 {`name`:"A"}) create (_1 {`name`:"root"}) create (_2 {`name`:"B"}) create (_3 {`name`:"C"}) create _0-[:`KNOWS`]->_3 create _1-[:`X`]->_0 create _1-[:`X`]->_2 create _1-[:`X`]->_3 drop index on :Person(name)
There is usually no need to specify which indexes to use in a query, Cypher will figure that out by itself. For example the query below will use the Person(name)
index, if it exists. If you for some reason want to hint to specific indexes, see Section 9.7, “Using”.
Query.
MATCH (n:Person { name: 'Andres' }) RETURN n |
Try this query live. create (_0 {`name`:"A"}) create (_1 {`name`:"root"}) create (_2 {`name`:"B"}) create (_3 {`name`:"C"}) create _0-[:`KNOWS`]->_3 create _1-[:`X`]->_0 create _1-[:`X`]->_2 create _1-[:`X`]->_3 match (n:Person {name: 'Andres'}) return n
Here's where to ask to get the best answers to your Neo4j questions:
Copyright © 2013 Neo Technology