如何从 java 中获取 Neo4j 图形数据库的节点数,我们可以从磁盘存储和重用 graphdb 吗?
Posted
技术标签:
【中文标题】如何从 java 中获取 Neo4j 图形数据库的节点数,我们可以从磁盘存储和重用 graphdb 吗?【英文标题】:How can I get the number of nodes of a Neo4j graph database from java and can we store and reuse graphdb from disk? 【发布时间】:2013-02-13 09:52:59 【问题描述】:我刚开始研究 neo4j 以将其用于我的社交网络相关项目。在此期间,我遇到了以下代码:
https://github.com/neo4j/neo4j/blob/1.9.M04/community/embedded-examples/src/main/java/org/neo4j/examples/EmbeddedNeo4jWithIndexing.java
在浏览它时(请参阅上面的代码链接),我很想知道如何获得添加到给定graphDb
的节点总数。有没有办法使用graphDb
或nodeIndex
或referenceIndex
或其他任何方法找到它(节点总数)?如果是,如何?
我还需要帮助知道,如何将 graphdb 存储到磁盘上的任何给定路径?如何加载这个存储的 graphdb 并对其执行操作,如搜索节点/关系等?
(执行上述代码时,在给定的DB_PATH
创建了几个文件,如*.db、*.id、*.keys 等。所有这些文件有什么用?这些文件中是否包含节点创建?如果是,我们如何使用它们?)
我们如何从网络界面访问此graphDb
,例如http://localhost:7474/webadmin/
的仪表板或http://localhost:7474/db/data/
的数据?
如果您需要任何具体信息来帮助我,请告诉我..
谢谢,尼丁。
【问题讨论】:
【参考方案1】:要开始使用 Neo4j Embedded 和 Java API,请参阅:
http://docs.neo4j.org/chunked/milestone/tutorials-java-embedded.html
获取正确的节点和关系计数:
IteratorUtil.count(GlobalGraphOperations.at(gdb).getAllNodes())
IteratorUtil.count(GlobalGraphOperations.at(gdb).getAllRelationships())
要使用集成的 neo4j 服务器访问嵌入式图形数据库,请参阅 http://docs.neo4j.org/chunked/milestone/server-embedded.html
【讨论】:
【参考方案2】:呸!对于一个条目,这些问题很多......
要获取数据库中节点和关系的总数,请使用:
NodeManager nodeManager = ((GraphDatabaseAPI) graphDb).getDependencyResolver().resolveDependency(
NodeManager.class);
long currentRelationships = nodeManager.getNumberOfIdsInUse(Relationship.class);
long currentNodes = nodeManager.getNumberOfIdsInUse(Node.class);
要更改图形数据库的路径,只需将路径传递给 GraphDatabaseFactory().newEmbeddedDatabase 方法。在您提到的示例中,您可以简单地设置 DB_PATH 例如到/home/youruser/neo4j
。
要通过 webadmin 访问您的数据库,请下载 neo4j,更改文件 conf/neo4j-server.properties
中的 org.neo4j.server.database.location 属性并将其指向您的数据库路径并启动服务器。
【讨论】:
非常感谢@James。关于GraphDatabaseFactory().newEmbeddedDatabase( DB_PATH )
,如果给定路径已经存在,这会加载数据库吗?如果没有,我们如何加载它而不是创建一个新的?在给定路径创建的各种文件是什么?您能否参考我可以找到此类特定文档/教程的任何链接(http://docs.neo4j.org
除外)?
我们在代码中可以看到,graphDb 中添加了 100 个(+1 引用节点)节点。但是,为什么我得到currentRelationships=300
和currentNodes=304
作为输出?
您将获得 304 个节点,因为您运行了该程序 3 次...每次运行添加 101 个节点加上一个参考节点 = 304。;-)以上是关于如何从 java 中获取 Neo4j 图形数据库的节点数,我们可以从磁盘存储和重用 graphdb 吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Neo4j Graph 中获取每个节点的不同中心性索引?
r 直接从Neo4j REST API获取图形数据到R.对于R igraph用户有用。
Neo4j - 图形数据科学库 - 如何对图形目录中的命名图形进行密码查询?