安装
[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设置
修改节点名称显示大小和节点颜色