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.
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);
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)
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
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