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

时间:2018-10-01 14:47:01

标签: neo4j cypher spring-data-neo4j

我想批量删除使用cypher存在的所有索引吗?我正在使用neo4j 3.4.7。

DROP INDEX  ON :Label(attributename)

如果在以后的阶段中创建相同的索引,它会替换现有的索引吗?

2 个答案:

答案 0 :(得分:3)

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

def gradient(x):
    d = x[1:]-x[:-1]
    fd = tf.concat([x,x[-1]], 0).expand_dims(1)
    bd = tf.concat([x[0],x], 0).expand_dims(1)
    d = tf.concat([fd,bd], 1)
    return tf.reduce_mean(d,1)

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

答案 1 :(得分:1)

对于3.x版,您可以使用内置过程Neo4j来确定所需的索引。您可以从网络浏览器发送密码查询:

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

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

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

最新版本here User management for Neo4j 的所有可能的内置过程和参数

使用CIPHER可以做到:

DROP INDEX ON:labelOfNode(propertyOfNode)

创建索引::labelOfNode(propertyOfNode)