删除Neo4j中的索引节点

Fyn*_*ynn 5 indexing scala neo4j

在Neo4j中,如果删除索引节点,是否必须先从索引中删除该节点,还是自动更新索引?

这是一个小的(未经测试的)示例:

val index = graphDb.index()
val someIdx = index.forNodes("someIdx")
val someNode = graphDb.createNode()
someIdx.add(someNode, "key", "value")
Run Code Online (Sandbox Code Playgroud)

然后:

//remove from someIdx???
someNode.delete()
Run Code Online (Sandbox Code Playgroud)

Nic*_*las 9

删除节点时,必须先删除索引.如果要从索引中删除节点的所有提及,请参阅以下内容:

    IndexManager indexManager = db.index();
    Index<Node> index = indexManager.forNodes("indexName");
    index.remove(node);
Run Code Online (Sandbox Code Playgroud)

  • 关于异常并不完全正确.当您尝试通过索引查询访问已删除的节点时,有一种容错机制可以对已删除的节点进行解除索引.但是:存在一个问题(与id-recycling相关,neo4j内部机制)可能导致索引损坏.因此,非常推荐从索引中手动删除索引节点 (2认同)