删除索引

可以使用 DROP INDEX index_name 命令通过名称删除(移除)索引。该命令可以删除任何类型的索引,但用于支持约束的索引除外。

可以删除在与当前版本不同的 Cypher® 版本中创建的索引。例如,尽管 Cypher 25 中增加了针对多个标签或包含额外属性的 VECTOR 索引,但仍可以使用 Cypher 5 删除此类索引。

索引名称可以通过 SHOW INDEXES 命令找到,该命令会在输出列 name 中显示名称。

DROP INDEX index_name [IF EXISTS]

DROP INDEX 命令可选择是否具有幂等性。这意味着它的默认行为是:如果尝试删除同一个索引两次,会抛出错误。使用 IF EXISTS 时,如果索引不存在,则不会抛出错误且不执行任何操作。相反,系统会返回一条说明性的通知,详细说明该索引不存在。

删除索引需要 DROP INDEX 权限

示例

删除索引

以下语句尝试删除名为 example_index 的索引。

删除索引
DROP INDEX example_index

如果存在该名称的索引,它将被删除;如果不存在,则命令失败。

使用参数删除索引

以下语句尝试使用索引名称的参数来删除名为 range_index_param 的索引。

参数
{
  "name": "range_index_param"
}
删除索引
DROP INDEX $name

如果存在该名称的索引,它将被删除;如果不存在,则命令失败。

删除约束支持的索引失败

无法删除用于支持约束的索引。

删除约束支持的索引
DROP INDEX uniqueBookIsbn
GQLSTATUS 错误链

22NBC: error: data exception - index belongs to constraint. Index belongs to constraint 'uniqueBookIsbn'.

50N10: error: general processing exception - index drop failed. Unable to drop 'uniqueBookIsbn'.

删除索引支持的约束也会同时删除该支持索引。有关详细信息,请参阅 按名称删除约束

删除不存在的索引

如果您不确定索引是否存在,并且希望在索引存在时将其删除,且在索引不存在时不希望收到错误,请使用 IF EXISTS

以下语句尝试删除名为 missing_index_name 的索引。

使用 IF EXISTS 删除索引
DROP INDEX missing_index_name IF EXISTS

如果存在该名称的索引,它将被删除;如果不存在,则该命令不会执行任何操作,并会返回一条说明性通知。

通知
`DROP INDEX missing_index_name IF EXISTS` has no effect. `missing_index_name` does not exist.