使用Java API连接到远程neo4j

Sys*_*Hex 7 neo4j

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

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

我正在使用 :

"org.neo4j" % "neo4j" % "2.1.5",
"org.neo4j" % "neo4j-rest-graphdb" % "2.0.1",
Run Code Online (Sandbox Code Playgroud)

并以这种方式连接到neo4j:

GraphDatabaseService gds = new RestGraphDatabase("http://neo4jserver_address:7474/db/data");
Run Code Online (Sandbox Code Playgroud)

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

"com.graphaware.neo4j" % "timetree" % "2.1.5.25.18",
Run Code Online (Sandbox Code Playgroud)

此外,由于同样的问题RestGraphDatabase不允许使用的事实GlobalGraphOperations.

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

我的问题是,如果有人知道以正确的方式连接到远程neo4j服务器的正确方法,我可以在文档中的哪些地方读到这一点?

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

PS - 不需要通过REST连接.协议是无关紧要的,问题是如何使用API​​连接到远程neo4j服务器(通过任何协议)并最终实现正确的完整实现GraphDatabaseService

Fro*_*its 4

我知道您真正想要的是GraphDatabaseService附加到 RESTful 端点的对象。这就是您的代码所说的内容,但根据我对情况的最佳理解,您也了解有关该实现的问题和限制的正确事实。

好的,鉴于此 - 我认为最好的答案是直接从 java 使用 REST API。该链接提供了详细的文档。但本质上,您不会处理NodeRelationship对象,而是处理 HTTP 请求和响应以及 JSON 处理。

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

  • 我认为你应该稍微不同地思考一下。要么您想使用 Neo4j 作为远程数据库。在这种情况下,您通过 REST 发送查询 (Cypher) 并获取结果作为(可能是流式传输)响应。或者您选择使用命令式 API,您希望逐步物理遍历图表。即使存在围绕 GraphDatabaseService 的适当 REST 包装器,这在网络上的效率也会非常低。在这种情况下,延期是有意义的。“繁重”代码是您的数据所在,并且 REST API 会暴露给客户端 - 这是一种常见的(恕我直言,鼓励)模式。 (3认同)
  • AFAIK,如果您想在本机 Java API 上进行编码并使用远程服务器,Neo4j 非托管服务器扩展可以满足您的需求。您可以在 Java API 之上编写代码,但将其部署在远程服务器上。我们在 GrapheneDB 中支持这一点,它是实现复杂算法或实现更高性能的最佳方法。我希望您觉得这有帮助。您可以在 http://neo4j.com/docs/stable/server-unmanagement-extensions.html 阅读有关非托管扩展的信息 (2认同)
  • 我明白。如果没有繁重的工作,那么扩展对您来说可能没有多大意义,因为您希望避免代码与数据层的耦合。由于 GDS 无法通过 REST 提供,因此您通常会依赖 Cypher + 事务端点将您的应用程序连接到远程 Neo4j 实例。这或多或少也是其他人指出的。 (2认同)