我正在编写一个使用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
答案 0 :(得分:4)
我知道你真正想要的是一个附加到RESTful端点的GraphDatabaseService
对象。这就是您的代码所说的内容,但基于我对情境的最佳理解,您还可以了解有关该实现的问题和限制的事实。
好的,所以考虑到 - 我认为你的最佳答案是use the REST API directly from java。该链接提供详细的文档。但实际上,您不会处理Node
和Relationship
个对象,而是处理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以统一的方式为远程和数据库提供数据库访问 到嵌入式数据库(包括内存数据库)