使用 Neo4jGraph.open() 或 GraphFactory.open() 访问 Java 中的远程 Neo4j 数据库

Use Neo4jGraph.open() or GraphFactory.open() to access remote Neo4j database in Java

我正在使用 Tinkerpop 的 GraphFactory.open(Configuration configuration) Java 命令访问 Neo4j 数据库。

一个最低限度的工作示例是:

Configuration configuration = new BaseConfiguration();
configuration.addProperty("gremlin.graph", "org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph");
configuration.addProperty("gremlin.neo4j.directory", "tmp/neo4j");
GraphFactory.open(configuration);

但是,我想改为连接到远程 Neo4j 数据库。 所以我需要像

这样的东西
configuration.addProperty("gremlin.neo4j.directory", "ip:port");

导致异常:

java.lang.RuntimeException: java.io.IOException: Unable to create directory path [C:\Users\backend2.168.56.102:7474] for Neo4j store.

似乎 Neo4j 试图像访问文件路径一样访问 ip:port... 预先感谢您的帮助。

如您所见,这种方法行不通。 Neo4jGraph 旨在作为嵌入式工作,因此需要数据库文件的文件系统位置,或者它可以成为 HA 集群中的节点,如 here.

所述

您的另一个选择是使用使用 Bolt 协议的第三方实现,neo4j-gremlin-bolt。那应该做你想要的。

感谢 stephen mallette,我找到了解决方案。

从 Neo4j 3.0 开始,默认启用 Bolt 协议。

所以我使用 neo4j-gremlin-bolt 通过 Java 连接到我的 Neo4j 远程数据库,如下所示:

Driver driver = GraphDatabase.driver("bolt://<IP>", AuthTokens.basic("user", "pass"));
Graph graph = new Neo4JGraph(driver, vertexIdProvider, edgeIdProvider));

阅读提供的 link 中的 ID 提供商。