如何删除neo4j中的所有索引?

Abd*_*man 4 neo4j cypher spring-data-neo4j

我想批量删除使用密码存在的所有索引可以完成吗?我正在使用 neo4j 3.4.7。

DROP INDEX  ON :Label(attributename)
Run Code Online (Sandbox Code Playgroud)

如果我在稍后阶段创建相同的索引,它是否会替换现有索引?

cyb*_*sam 8

删除所有索引和约束的快速方法是使用 APOC 过程apoc.schema.assert,如下所示:

CALL apoc.schema.assert({},{},true) YIELD label, key
RETURN *
Run Code Online (Sandbox Code Playgroud)

该过程主要是为了确保数据库具有前 2 个映射中传递的索引和约束,但第三个参数确定是否删除任何其他索引和约束。在上面的查询中,前 2 个映射是空的,因此最终结果是所有索引和约束都被删除。

  • 请注意,这不适用于复合索引或节点键约束,我也不认为它适用于属性存在约束。 (2认同)

abm*_*day 6

对于版本 3.x,您可以使用内置程序 Neo4j 来指定您想要的索引。您可以从网络浏览器发送 Cipher 查询:

CALL db.indexes() - 列出数据库中的所有索引。

CALL db.index.fulltext.drop() -删除指定的索引。

CALL db.index.explicit.drop() - 删除显式索引 - YIELD 类型、名称、配置

最新版本的所有可能的内置过程和参数均位于 此处 Neo4j 的用户管理

旧风格用 CIPHER 来做:

删除索引:labelOfNode(propertyOfNode)

在 :labelOfNode(propertyOfNode) 上创建索引