🍑一、下载安装
- 下载地址
- 解压,配置环境变量
NEO4J_HOME
- 启动报错
警告: ERROR! Neo4j cannot be started using java version 1.8.0_151
警告: * Please use Oracle(R) Java(TM) 11, OpenJDK(TM) 11 to run Neo4j Server.
* Please see https://neo4j.com/docs/ for Neo4j installation instructions.
Invoke-Neo4j : This instance of Java is not supported
所在位置 D:\soft\neo4j-community-4.4.8\bin\neo4j.ps1:21 字符: 7
+ Exit (Invoke-Neo4j -Verbose:$Arguments.Verbose -CommandArgs $Argument ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Invoke-Neo4j
4.x要求Java11+版本,重新下载3.X版本,重新配置环境变量
首先执行neo4j install-service
命令
报错,目前配置的是jdk开发环境,需要指定运行环境:
- 指定jdk
set JAVA_HOME=D:\soft\jdk1.8.151\jre
- 再次执行安装、启动命令
先执行neo4j install-service,否则start、stop命令无法使用
C:\Users\lenovo>neo4j start
Service start failed - service 'neo4j' not found
C:\Users\lenovo>neo4j install-service
Neo4j service installed
C:\Users\lenovo>neo4j start
Neo4j service started
C:\Users\lenovo>
- 登录
http://localhost:7474/browser/
用户密码:neo4j/neo4j
🍑二、基本CQL命令
相当于SQL
- 创建
CREATE (emp:Employee{id:123,name:"Lokesh",sal:35000,deptno:10})
- 查询
MATCH (emp:Employee) return emp
必须搭配return或者update使用:
- 删除
MATCH (emp:Employee) delete emp
🍑三、JAVA API
package com.renxiaozhao.neo4j;
import java.io.File;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.RelationshipType;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
public class Neo4jJavaApi {
public static void main(String[] args) {
GraphDatabaseService graphDb;
Node firstNode;
Node secondNode;
Relationship relationship;
graphDb = new GraphDatabaseFactory()
.newEmbeddedDatabase(new File("D:\\soft\\neo4j-community-3.5.34\\data\\databases\\testdb"));
try (Transaction tx = graphDb.beginTx()) {
firstNode = graphDb.createNode();
firstNode.setProperty("message", "Hello, ");
secondNode = graphDb.createNode();
secondNode.setProperty("message", "World!");
relationship = firstNode.createRelationshipTo(secondNode, RelTypes.KNOWS);
relationship.setProperty("message", "brave Neo4j ");
tx.success();
System.out.print(firstNode.getProperty("message"));
System.out.print(relationship.getProperty("message"));
System.out.print(secondNode.getProperty("message"));
} catch (Exception e) {
System.out.println(e);
} finally {
graphDb.shutdown();
}
}
private enum RelTypes implements RelationshipType {
KNOWS
}
}
- 执行demo,确保此时neo4j处于stop状态
- 启动neo4j,可以查看到写入的数据
执行程序时,neo4j必须处于关闭状态
启动neo4j查看数据时,需要指定程序所创建的数据库
🍑四、Driver API(类似jdbc)
package com.renxiaozhao.neo4j;
import org.neo4j.driver.v1.AuthTokens;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.GraphDatabase;
import org.neo4j.driver.v1.Session;
import org.neo4j.driver.v1.Statement;
import org.neo4j.driver.v1.StatementResult;
import org.neo4j.driver.v1.Transaction;
import org.neo4j.driver.v1.Values;
public class Neo4jDriverExample {
Driver driver;
public static void main(String[] args) {
Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "neo4j"));
try (Session session = driver.session();
Transaction transaction = session.beginTransaction()) {
Statement query = new Statement(
"CREATE (a:Greeting) SET a.message = $message RETURN a.message + ', from node ' + id(a)",
Values.parameters("message", "testDriver"));
StatementResult result = transaction.run(query);
transaction.success(); // mark success, actually commit will happen in transaction.close()
String greeting = result.single().get(0).asString();
System.out.println(greeting);
}
driver.close();
}
}
官方资料只找到了4.x版本的:
官方资料
driver api
3.5和4.x差异说明