使用Java API连接到远程neo4j

时间:2014-11-25 16:39:14

标签: neo4j

我正在编写一个使用neo4j的测试应用程序。我一直在尝试遵循一些教程,在线阅读以及检查文档,最常用的方法是使用嵌入式neo4j。

现在,由于多种原因,这对我不起作用。 (例如,不同机器上的服务器等)

我正在使用:

"org.neo4j" % "neo4j" % "2.1.5",
"org.neo4j" % "neo4j-rest-graphdb" % "2.0.1",

以这种方式连接到neo4j:

GraphDatabaseService gds = new RestGraphDatabase("http://neo4jserver_address:7474/db/data");

如前所述,在另一篇SO帖子中,RestGraphDatabase并不是GraphDatabaseService的完整实现,在尝试使用时会导致各种各样的麻烦,例如:< / p>

"com.graphaware.neo4j" % "timetree" % "2.1.5.25.18",

此外,RestGraphDatabase由于同样的问题而不允许使用GlobalGraphOperations这一事实。

我已尝试查找我发现的官方文档,并再次给出了嵌入式数据库的示例。

我的问题是,是否有人知道以正确的方式连接到远程neo4j服务器的正确方法以及文档中我可以阅读的有关此位的内容?

另外,我没有使用neo4j HA,虽然我有一年的测试许可证。

PS - 不需要通过REST连接。协议是无关紧要的,问题是如何使用API​​连接到远程neo4j服务器(通过任何协议),并以GraphDatabaseService

的正确,完整实现结束

3 个答案:

答案 0 :(得分:4)

我知道你真正想要的是一个附加到RESTful端点的GraphDatabaseService对象。这就是您的代码所说的内容,但基于我对情境的最佳理解,您还可以了解有关该实现的问题和限制的事实。

好的,所以考虑到 - 我认为你的最佳答案是use the REST API directly from java。该链接提供详细的文档。但实际上,您不会处理NodeRelationship个对象,而是处理HTTP请求和响应以及JSON处理。

请参阅我提供的链接背后的示例,它提供了许多有关如何使其工作的代码示例。好消息是你可以在服务器端做任何事情。坏消息是,它不太方便。我希望将来有一个非常好的GraphDatabaseService实施方案。如果我的代码不必关心数据库是本地文件还是远程服务,那将是非常强大的。

答案 1 :(得分:4)

我不知道这可能是你的帮助;

RestAPI restapi = new RestAPIFacade("http://localhost:7474/db/data")
RestCypherQueryEngine rcqer=new RestCypherQueryEngine(restapi)

这允许您使用在neo4j shell中执行的实际cypher查询;

String query = "Start n=node(*) return count(n) as totalRecords"
    QueryResult<Map<String,Object>> queryResult = rcqer.query(query,org.neo4j.helpers.collection.MapUtil.map("null",null))
    for(Map<String,Object> row:queryResult){
        numberOfNodes = row.get("totalRecords")
    }

答案 2 :(得分:0)

我认为JCypher提供了您所需要的:

  

JCypher以统一的方式为远程和数据库提供数据库访问   到嵌入式数据库(包括内存数据库)