我使用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\backend\192.168.56.102:7474] for Neo4j store.
似乎Neo4j尝试像文件路径一样访问ip:port ... 在此先感谢您的帮助。
答案 0 :(得分:1)
正如您所发现的那样,这种方法无法奏效。 Neo4jGraph
旨在作为嵌入式工作,因此需要数据库文件的文件系统位置,或者它可以成为HA集群中的节点,其描述为here。
您的另一种选择是使用使用Bolt协议的第三方实现neo4j-gremlin-bolt。那应该做你想要的。
答案 1 :(得分:0)
感谢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));
在提供的链接上了解ID提供商。