neo4j 安装、CQL语法、java连接方式及简单使用

安装

    [root@openstack-node1 tmp]# cd /tmp  
    [root@openstack-node1 tmp]# wget http://debian.neo4j.org/neotechnology.gpg.key  
    [root@openstack-node1 tmp]# rpm --import neotechnology.gpg.key  
    [root@openstack-node1 tmp]# cat <<EOF > /etc/yum.repos.d/neo4j.repo  
    > [neo4j]  
    > name=Neo4j Yum Repo  
    > baseurl=http://yum.neo4j.org/stable  
    > enabled=1  
    > gpgcheck=1  
    > EOF  
   

    [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设置


修改节点名称显示大小和节点颜色


猜你喜欢

转载自blog.csdn.net/huangchangling/article/details/80380601
今日推荐