Neo4j: krok po kroku, aby utworzyć automatyczny indeks

Tworzę nową bazę danych Neo4j. Mam typ węzła o nazwie User i chciałbym mieć indeks właściwości user Identifier i EmailAddress . Jak założyć indeks, gdy baza danych jest nowa? Zauważyłem, że w pliku Neo4j. properties wygląda na wsparcie dla tworzenia indeksów. Jednak gdy ustawiłem je jako tak

# 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

I Dodaj węzeł i wykonaj zapytanie, aby znaleźć identyfikator, o którym Wiem, że istnieje

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

Wtedy dostaję an

MissingIndexException: Index `Identifier` does not exist

Jak utworzyć indeks i użyć go w zapytaniu startowym? Chcę tylko użyć plików config i cypher, aby to osiągnąć. tzn. w chwili obecnej gram tylko w konsoli elektronarzędzi.

Author: Somnath Muluk, 2012-10-14

3 answers

Dodaj następujący plik do pliku 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

Tworzenie indeksu auto dla węzłów

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

Sprawdź, czy istnieją

neo4j-sh (0)$ index --indexes

Should return

Node indexes:
node_auto_index

Podczas zapytań użyj następującej składni, aby określić indeks

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

Ponieważ węzeł jest automatycznie indeksowany, nazwa indeksu to node_auto_index

Ta informacja pochodzi z komentarza na dole tej strony

Update

W przypadku, gdy chcesz indeksować swój bieżący dane, które były tam przed włączeniem automatycznego indeksowania (gdzie Property_Name jest nazwą Twojego indeksu)

START nd =node(*) 
WHERE has(nd.Property_Name)
WITH nd
SET nd.Property_Name = nd.Property_Name
RETURN count(nd);
 51
Author: Aran Mulholland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-27 21:34:01

W Neo4j 2.0 powinieneś używać etykiet i nowych ograniczeń

    CREATE CONSTRAINT ON (n:User) ASSERT n.Identifier IS UNIQUE
    CREATE CONSTRAINT ON (n:User) ASSERT n.EmailAddress IS UNIQUE
Jeśli wiadomość e-mail nie jest unikalna dla każdego użytkownika, Utwórz zwykły indeks:
    CREATE INDEX ON :User(EmailAddress)
 8
Author: boggle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-23 11:59:33

Indeksy wykonane głównie na nieruchomościach, które są używane do stanu gdzie. W Neo4j 2.0 indeksy są teraz łatwe do zrobienia.

Tworzenie indeksu na etykiecie

CREATE INDEX ON :Person(name)

Spadek indeksu na etykiecie

DROP INDEX ON :Person(name)

Utwórz ograniczenie unikalności

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

Ograniczenie unikalności kropli

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

Aby wyświetlić listę wszystkich indeksów i ograniczeń w neo4j-browser, użyteczne jest polecenie

:schema

Wymień indeksy i ograniczenia dla konkretnej etykiety z:

:schema ls -l :YourLabel
 8
Author: Somnath Muluk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-29 11:06:49