[英]Query a remote neo4j server via Java
Can anybody provide some example code of how to connect and query a remote neo4j server via Java?谁能提供一些有关如何通过 Java 连接和查询远程 neo4j 服务器的示例代码? I'm not looking for an embedded neo4j server implementation.
我不是在寻找嵌入式 neo4j 服务器实现。
Here is an attempt to get this working:这是让这个工作的尝试:
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());
}
This results in this:这导致:
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
I have also tried to implement this using jersey:我还尝试使用球衣来实现这一点:
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));
This does return data from neo4j, but it is in html format and I would like to utilize the cypher query language.这确实从 neo4j 返回数据,但它是 html 格式,我想利用密码查询语言。
Don't do that!不要那样做!
Use用
CypherQueryEngine cypher = new RestCypherQueryEngine(restGraphDB.getRestAPI());
cypher.query(statement, params);
For your second example, your base-uri is wrong.对于您的第二个示例,您的 base-uri 是错误的。 Also you have to add
content-type
and accept
headers to be application/json
您还必须添加
content-type
并accept
标题为application/json
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.