database indexing neo4j cypher database-indexes

database - Neo4j: paso a paso para crear un índice automático



indexing cypher (3)

Estoy creando una nueva base de datos Neo4j. Tengo un tipo de nodo llamado Usuario y me gustaría un índice sobre las propiedades de Identificador de usuario y Dirección de correo electrónico . ¿Cómo se puede configurar un índice cuando la base de datos es nueva? He notado en el archivo neo4j.properties que parece ser soporte para crear índices. Sin embargo, cuando configuro esto como tal

# Autoindexing # Enable auto-indexing for nodes, default is false node_auto_indexing=true # The node property keys to be auto-indexed, if enabled node_keys_indexable=EmailAddress,Identifier

Y agrega un nodo y haz una consulta para encontrar un identificador que sé que existe

START n=node:Identifier(Identifier = "USER0") RETURN n;

entonces obtengo un

MissingIndexException: Index `Identifier` does not exist

¿Cómo creo un índice y lo uso en una consulta de inicio? Solo quiero usar archivos de configuración y cifrado para lograr esto. es decir, en este momento solo estoy jugando en la Power Tool Console.


Índices hechos principalmente en la propiedad que se usa para donde condición. En Neo4j 2.0, los índices son fáciles de hacer ahora.

Crear índice en una etiqueta

CREATE INDEX ON :Person(name)

Colocar índice en una etiqueta

DROP INDEX ON :Person(name)

Crear restricción de exclusividad

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

Cláusula de exclusividad de gota

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

Para enumerar todos los índices y restricciones en neo4j-browser, seguir el comando es útil

:schema

Indique índices y restricciones para etiquetas específicas con:

:schema ls -l :YourLabel


Agregue lo siguiente al archivo neo4j.properties

# Autoindexing # Enable auto-indexing for nodes, default is false node_auto_indexing=true # The node property keys to be auto-indexed, if enabled node_keys_indexable=EmailAddress,Identifier

Crear el índice automático para nodos

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

Comprueba si existen

neo4j-sh (0)$ index --indexes

Debería regresar

Node indexes: node_auto_index

Al realizar consultas, use la siguiente sintaxis para especificar el índice

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

Como el nodo se indiza automáticamente, el nombre del índice es node_auto_index

Esta información proviene de un comentario en la parte inferior de esta página

Actualizar

En caso de que desee indexar sus datos actuales que estaban allí antes de que se activara la indexación automática (donde Property_Name es el nombre de su índice)

START nd =node(*) WHERE has(nd.Property_Name) WITH nd SET nd.Property_Name = nd.Property_Name RETURN count(nd);


En Neo4j 2.0, debe usar etiquetas y las nuevas restricciones en su lugar

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

Si el correo electrónico no es único por usuario, simplemente cree un índice simple en su lugar:

CREATE INDEX ON :User(EmailAddress)