簡體   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