获取 Neo4j 索引的所有密钥



我有一个Neo4j数据库,其内容是从大数据集动态生成的。

所有"入口点"节点都索引在命名索引 (IndexManager.forNodes(…) ) 上。因此,我可以查找特定的"入口点"节点。

但是,我现在想枚举所有这些特定节点,但我不知道它们是在哪个键上索引的

有没有办法枚举 Neo4j 索引的所有键?

如果不是,存储这些键的最佳方法是什么,这种数据类型非常不面向图形?


更新(感谢您:)询问详细信息):该列表将超过200万个条目。主要用例是在初始化步骤后从不更新它,但其他用例可能需要它,因此它必须具有一定的可扩展性。

此外,我

真的更希望避免杀死我当前的弹性能力,因此一次存储所有密钥,而不是增量添加它们,将是最后的手段。

我要么使用不同的数据存储来补充 Neo4j——我喜欢 Redis- 要么尝试@MattiasPersson的建议并将列表存储在节点上。

它只是一个键列表还是每个节点的列表?您可以将这样的列表存储在特定节点上,例如引用节点。

与其使用增加复杂性的不同存储,不如再试一次

  1. 通常,Lucene能够轻松处理这个问题,特别是现在MatchAllDocsQuery更好了。 但一个问题是,Neo4J的家伙使用的是非常旧的Lucene版本。

  2. 每个节点中都有一个特殊的"引用"字段,特别是对于链接到下一个节点的键遍历情况,您可以在其中轻松获取所有属性:)

如果你想获取在特定索引中索引的所有节点,你可以做:

IndexHits<Node> hits = IndexManager.forNodes(<INDEX_NAME>).query("*:*");
try{
    while(hits.hasNext()){
        Node n = hits.next();
        ...process the node...
    }
}finally{
    hits.close();
}

最新更新