繁体   English   中英

通过Java查询远程neo4j服务器

[英]Query a remote neo4j server via Java

谁能提供一些有关如何通过 Java 连接和查询远程 neo4j 服务器的示例代码? 我不是在寻找嵌入式 neo4j 服务器实现。

这是让这个工作的尝试:

import org.neo4j.cypher.javacompat.ExecutionEngine;
import org.neo4j.cypher.javacompat.ExecutionResult;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.rest.graphdb.RestGraphDatabase;

public static void main(String[] args) {
        GraphDatabaseService neo4j = new RestGraphDatabase("neo4jurl");
        ExecutionEngine engine = new ExecutionEngine(neo4j);
        String myCypher = "MATCH n WHERE n.symptom = 'Xanthelasma'";
        ExecutionResult result = engine.execute(myCypher);
        System.out.println(result.toString());
    }

这导致:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jersey/api/client/filter/ClientFilter
    at org.neo4j.rest.graphdb.ExecutingRestAPI.createRestRequest(ExecutingRestAPI.java:82)
    at org.neo4j.rest.graphdb.ExecutingRestAPI.<init>(ExecutingRestAPI.java:73)
    at org.neo4j.rest.graphdb.RestAPIFacade.<init>(RestAPIFacade.java:294)
    at org.neo4j.rest.graphdb.RestGraphDatabase.<init>(RestGraphDatabase.java:51)
    at mapreduce.NetworkAnalysis.main(NetworkAnalysis.java:20)
Caused by: java.lang.ClassNotFoundException: com.sun.jersey.api.client.filter.ClientFilter
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 5 more

我还尝试使用球衣来实现这一点:

String baseURI = new String("neo4jurl");
String payload = "db/data/node/5/relationships/all/CO_SYM";
Client client = ClientBuilder.newClient();
WebTarget target = client.target(baseURI + payload);
System.out.println(target.getUri());
Invocation.Builder invocationBuilder = target.request();
Response response = invocationBuilder.get();
System.out.println(response.getStatus());
System.out.println(response.readEntity(String.class));

这确实从 neo4j 返回数据,但它是 html 格式,我想利用密码查询语言。

不要那样做!

CypherQueryEngine cypher = new RestCypherQueryEngine(restGraphDB.getRestAPI());
cypher.query(statement, params);

对于您的第二个示例,您的 base-uri 是错误的。 您还必须添加content-typeaccept标题为application/json

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM