安装
[root@openstack-node1 tmp]# yum install neo4j -y
启动
[root@openstack-node1 tmp]# neo4j --help
Usage: neo4j { console | start | stop |restart | status | version }
[root@openstack-node1 tmp]# neo4j console
Active database: graph.db
Directories in use:
home: /var/lib/neo4j
config: /etc/neo4j
logs: /var/log/neo4j
plugins: /var/lib/neo4j/plugins
import: /var/lib/neo4j/import
data: /var/lib/neo4j/data
certificates: /var/lib/neo4j/certificates
run: /var/run/neo4j
Starting Neo4j.
安装完成访问http://ip:7474/browser/,默认用户名密码为neo4j
CQL语法
CREATE命令语法:
CREATE ( <node-name>:<label-name> { <Property1-name>:<Property1-Value> ........ <Propertyn-name>:<Propertyn-Value> } )
样例
CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" })
MATCH命令语法:
MATCH ( <node-name>:<label-name> )
样例
MATCH (dept:Dept)
RETURN命令语法:
RETURN <node-name>.<property1-name>, ........ <node-name>.<propertyn-name>
样例
RETURN dept.deptno
创建关系语法:
MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>) CREATE (<node1-label-name>)-[<relationship-label-name>:<relationship-name>]->(<node2-label-name>) RETURN <relationship-label-name>
样例
MATCH (e:Customer),(cc:CreditCard) CREATE (e)-[r:DO_SHOPPING_WITH ]->(cc)
DELETE节点子句语法
DELETE <node-name-list>
样例
MATCH (e: Employee) DELETE e
DELETE节点和关系子句语法
DELETE <node1-name>,<node2-name>,<relationship-name>样例
MATCH (cc: CreditCard)-[rel]-(c:Customer) DELETE cc,c,rel
Neo4j CQL MERGE语法
MERGE (<node-name>:<label-name> { <Property1-name>:<Pro<rty1-Value> ..... <Propertyn-name>:<Propertyn-Value> })Neo4j CQL MERGE命令在图中搜索给定模式,如果存在,则返回结果
如果它不存在于图中,则它创建新的节点/关系并返回结果。
样例
MERGE (gp2:GoogleProfile2{ Id: 201402,Name:"Nokia"})
java访问
java可通过三种方式访问,Neo4j Native Java API、Neo4j的restful接口和jdbc方式,下面介绍通过jdbc方式
引入maven
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-jdbc</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-jdbc-driver</artifactId>
<version>3.3.0</version>
</dependency>
java code样例:
package test.neo4j; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.neo4j.driver.v1.StatementResult; import org.neo4j.jdbc.Neo4jConnection; public class Neo4jTest { public static void main(String[] args) throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException { // TODO Auto-generated method stub try (Connection con = DriverManager.getConnection("jdbc:neo4j:http://172.16.219.230/7474/", "neo4j", "123qwe")) { // Querying /*try (Statement stmt = con.createStatement()) { ResultSet rs = stmt.executeQuery("MATCH (video1:YoutubeVideo1) RETURN video1.title"); while (rs.next()) { System.out.println(rs.getString("video1.title")); } } try (Statement stmt = con.createStatement()) { ResultSet rs = stmt.executeQuery("CREATE (emp1:Employee{id:123,name:\"Lokesh\",sal:35000,deptno:10})"); } try (Statement stmt = con.createStatement()) { ResultSet rs = stmt.executeQuery("CREATE (emp:Employee{id:456,name:\"tom\",sal:35000,deptno:10})"); }*/ /*try (Statement stmt = con.createStatement()) { ResultSet rs = stmt.executeQuery("MATCH (ip:SrcAddress)-[relation:relationship]-(port:Port) DELETE relation"); }*/ /*try (Statement stmt = con.createStatement()) { ResultSet rs = stmt.executeQuery("MATCH (ip:SrcAddress) DELETE ip"); }*/ /*for(int i=1;i<100;i++){ String sql = "CREATE (emp"+i+":Employee{id:"+i+",name:\"Lokesh\",sal:35000,deptno:10})"; try (Statement stmt = con.createStatement()) { boolean issuccess = stmt.execute(sql); // ResultSet rs = stmt.executeQuery(sql); System.out.println(issuccess); } }*/ try (Statement stmt = con.createStatement()) { //ResultSet rs = stmt.executeQuery("MERGE (ip:SrcAddress{name:\"172.17.8.161\"})-[relation:relationship{name:\"网络连接\",dev:\"10.10.12.1\"}]->(port:Port{name:\"null\"})"); ResultSet rs1 = stmt.executeQuery("MERGE (ip:SrcAddress{name:\"172.17.8.161\"})"); ResultSet rs2 = stmt.executeQuery("MERGE (port:Port{name:\"23\"})"); ResultSet rs = stmt.executeQuery("MATCH (ip:SrcAddress{name:\"172.17.8.161\"}),(port:Port{name:\"23\"}) MERGE (ip)-[relation:relationship{name:\"网络连接\",dev:\"10.10.12.2\"}]->(port)"); } } } }
简单使用
列出所有节点和关系信息
修改默认节点显示数量,默认显示25
所有节点默认最大显示300,可通过setting设置
修改节点名称显示大小和节点颜色