Neo4j: Step by Step to create an automatic index Neo4j: Step by Step to create an automatic index database database

Neo4j: Step by Step to create an automatic index


Add the following to the neo4j.properties file

# Autoindexing# Enable auto-indexing for nodes, default is falsenode_auto_indexing=true# The node property keys to be auto-indexed, if enablednode_keys_indexable=EmailAddress,Identifier

Create the auto index for nodes

neo4j-sh (0)$ index --create node_auto_index -t Node

Check if they exist

neo4j-sh (0)$ index --indexes

Should return

Node indexes:node_auto_index

When querying use the following syntax to specify the index

start a = node:node_auto_index(Identifier="USER0")return a;

As the node is auto indexed the name of the index is node_auto_index

This information came from a comment at the bottom of this page

Update

In case you want to index your current data which was there before automatic indexing was turned on (where Property_Name is the name of your index)

START nd =node(*) WHERE has(nd.Property_Name)WITH ndSET nd.Property_Name = nd.Property_NameRETURN count(nd);


Indexes mainly made on property which is used for where condition. In Neo4j 2.0, indexes are easy to make now.

Create index on a label

CREATE INDEX ON :Person(name)

Drop index on a label

DROP INDEX ON :Person(name)

Create uniqueness constraint

CREATE CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE

Drop uniqueness constraint

DROP CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE

For listing all indexes and constraints in neo4j-browser, following command is useful

:schema

List indices and constraints for specific label with:

:schema ls -l :YourLabel


In Neo4j 2.0, you should use labels and the new constraints instead

    CREATE CONSTRAINT ON (n:User) ASSERT n.Identifier IS UNIQUE    CREATE CONSTRAINT ON (n:User) ASSERT n.EmailAddress IS UNIQUE

If email isn't unique per user, just create a plain index instead:

    CREATE INDEX ON :User(EmailAddress)