我对如何从java连接远程neo4j服务器感到困惑。我可以直接使用neo4j api,我是否必须使用REST api ??
我们说我的服务器运行在270.270.270.270,我想:
cn = connect(270.270.270.270)
results = cn.runSomeQuery //(with Cypher or... can I call a plugin or unmanaged extension?)
return results
答案 0 :(得分:1)
是的,核心Java API和REST HTTP API之间的二分法并不总是很容易掌握。从那里开始:http://neo4j.com/developer/java/
有两种方法可以使用JVM中的Neo4j。独立的Neo4j 服务器可以安装在任何机器上,然后通过HTTP访问 API。(...)
但是你也可以在你的JVM进程中运行Neo4j,就像 HSQL或Derby。
除非您100%确定只需要嵌入式数据库,否则可以查看http://neo4j.com/docs/stable/server-java-rest-client-example.html以获取在Java中使用REST API的示例。
final String txUri = SERVER_ROOT_URI + "transaction/commit";
WebResource resource = Client.create().resource( txUri );
String payload = "{\"statements\" : [ {\"statement\" : \"" +query + "\"} ]}";
ClientResponse response = resource
.accept( MediaType.APPLICATION_JSON )
.type( MediaType.APPLICATION_JSON )
.entity( payload )
.post( ClientResponse.class );
答案 1 :(得分:0)
我使用这样的东西。我使用我创建的方法创建连接,然后使用getHalt()等其他方法来运行查询。我猜这很简单。
SELECT i.ID, i.name,i.rooms, RG.RoomGuests
FROM Info_Table i
LEFT JOIN ( SELECT R.ID, R.R_ID AS RG_ID,
CONCAT('[',
GROUP_CONCAT(CONCAT('{\"NoOfAdults\":\"', Adult,'\",\n',
'\"NoOfChild\":\"', Child,'\",\n',
'\"ChildAge\":', IFNULL(CA.ChildAge, '[]'),'}')),
']')
AS RoomGuests
FROM RoomGuests_Table R
LEFT JOIN ( SELECT C.R_ID AS CA_ID,
CONCAT('[',
GROUP_CONCAT( Age SEPARATOR ','),
']') AS ChildAge
FROM ChildAge_Table C
GROUP BY CA_ID) CA
ON CA.CA_ID = R.ID) RG
ON RG.RG_ID = i.ID
WHERE i.ID = 'INFO3'
GROUP BY RG_ID;