Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Neo4j:逐步创建自动索引_Database_Indexing_Neo4j_Cypher_Database Indexes - Fatal编程技术网

Database Neo4j:逐步创建自动索引

Database Neo4j:逐步创建自动索引,database,indexing,neo4j,cypher,database-indexes,Database,Indexing,Neo4j,Cypher,Database Indexes,我正在创建一个新的Neo4j数据库。我有一个名为User的节点类型,我想要一个关于UserIdentifier和EmailAddress属性的索引。当数据库是新的时,如何设置索引?我注意到在neo4j.properties文件中似乎支持创建索引。然而,当我将这些设置为 # Autoindexing # Enable auto-indexing for nodes, default is false node_auto_indexing=true # The node property key

我正在创建一个新的Neo4j数据库。我有一个名为User的节点类型,我想要一个关于UserIdentifierEmailAddress属性的索引。当数据库是新的时,如何设置索引?我注意到在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
并添加一个节点并进行查询以查找我知道存在的标识符

START n=node:Identifier(Identifier = "USER0")
RETURN n;
然后我得到一个

MissingIndexException: Index `Identifier` does not exist

如何创建索引并在开始查询中使用它?我只想使用配置文件和密码来实现这一点。i、 e.目前我只在电动工具控制台中玩。

将以下内容添加到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
为节点创建自动索引

neo4j-sh (0)$ index --create node_auto_index -t Node
检查它们是否存在

neo4j-sh (0)$ index --indexes
应该回来

Node indexes:
node_auto_index
查询时,请使用以下语法指定索引

start a = node:node_auto_index(Identifier="USER0")
return a;
由于节点是自动索引的,因此索引的名称是
node\u auto\u index

这一信息来源于报纸底部的一条评论

更新

如果您想索引在自动索引打开之前存在的当前数据(其中Property_Name是索引的名称)


在Neo4j 2.0中,应该使用标签和新约束

    CREATE CONSTRAINT ON (n:User) ASSERT n.Identifier IS UNIQUE
    CREATE CONSTRAINT ON (n:User) ASSERT n.EmailAddress IS UNIQUE
如果电子邮件不是每个用户唯一的,只需创建一个普通索引即可:

    CREATE INDEX ON :User(EmailAddress)

索引主要针对用于where条件的属性。在Neo4j 2.0中,索引现在很容易创建

在标签上创建索引

CREATE INDEX ON :Person(name)
DROP INDEX ON :Person(name)
在标签上放置索引

CREATE INDEX ON :Person(name)
DROP INDEX ON :Person(name)
创建唯一性约束

CREATE CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE
DROP CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE
删除唯一性约束

CREATE CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE
DROP CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE
要在neo4j浏览器中列出所有索引和约束,以下命令非常有用

:schema
列出特定标签的索引和约束,包括:

:schema ls -l :YourLabel

使用。页面加载后,选择console选项卡。你可以在那里执行shell命令。这个答案非常古老,我不确定这是否仍然是最好的方法。对此进行一些澄清是很好的。请务必在下面看到Boggle的答案-在2.0+中,索引的工作方式要简单得多-正如您所说的,这是一个新的数据库,所以希望可以选择使用最新的neo4j版本。。。