docker run -d --name container_name \  //-d表示容器后台运行 --name指定容器名字
-p 7474:7474 -p 7687:7687 \ //映射容器的端口号到宿主机的端口号
-v /home/neo4j/data:/data \ //把容器内的数据目录挂载到宿主机的对应目录下
-v /home/neo4j/logs:/logs \ //挂载日志目录
-v /home/neo4j/conf:/var/lib/neo4j/conf //挂载配置目录
-v /home/neo4j/import:/var/lib/neo4j/import \ //挂载数据导入目录
--env NEO4J_AUTH=neo4j/password \ //设定数据库的名字的访问密码
neo4j //指定使用的镜像


一个可以直接复制粘贴到终端执行的代码模板

docker run -d --name myneo4j -p 7474:7474 -p 7687:7687 -v /home/neo4j/data:/data -v /home/neo4j/logs:/logs -v /home/neo4j/conf:/var/lib/neo4j/conf -v /home/neo4j/import:/var/lib/neo4j/import --env NEO4J_AUTH=neo4j/password neo4j


其中container_name可以自己指定,挂载在根目录下的子目录可以根据你自己的实际情况进行替换,我这里是/home。另外NEO4J_AUTH也是你自己来进行设置。

neo4j

将数据复制到容器内部:

docker cp ./api.csv 67aaabf4f905:/var/lib/neo4j/import/


简单导入数据

zcy.csv, herber.csv,r_contain.csv

neo4j 简单使用_facebook

neo4j 简单使用_facebook_02

method

name

playground

apiresponse

apiparams

category

apiroute

apidescription

content

methodname

##导入实体
LOAD CSV WITH HEADERS FROM "file:///api.csv" AS line
MERGE (z:api{name: line.name, method:line.method, playground: line.playground, apiresponse: line.apiresponse, apiparams: line.apiparams, category: line.category, apiroute: line.apiroute, apidescription: line.description, content: line.content, methodname: line.methodname})

##导入实体
LOAD CSV WITH HEADERS FROM "file:///relations.csv" AS line
MERGE (z:relations{agrs1:line.relation1 , args2:line.rel ation2})

##导入关系第一种方法:
LOAD CSV WITH HEADERS FROM "file:///api_relation.csv" AS row
match (from:api{name:row.api_name1}),(to:api{name:row.api_name2})
merge (from)-[r:call{relation:row.relation , result :row.reslut}]->(to)


//存在空值时,使用create

删除节点

match (n:qianfu) delete n


删除关系

MATCH (Raul)-[r:rel_name]->(It)
DELETE r


关系建立

语法:

CREATE
(<node1-label-name>:<node1-name>)-
[<relationship-label-name>:<relationship-name>]->
(<node1-label-name>:<node1-name>)
RETURN <relationship-label-name>

案例:

CREATE (fb1:FaceBookProfile1)-[like:LIKES]->(fb2:FaceBookProfile2)


查询

普通查询匹配

​MATCH (a:api_name)-[r:call]->(b:api_name) where a.name contains 'amounts' RETURN a,r,b​

​match p=(a:api_name)-[*]-() where a.name contains 'am' return p​

节点多深度关系

match p=(a:api_name)-[*..7]-(c:api_name) where a.name contains 'amou' return p


java 操作neo4j

package neo4j;/*
* @Author ljc
* @Description //TODO $
* @Param $
* @return $
**/


import org.neo4j.driver.*;
import org.neo4j.driver.types.Entity;
import org.neo4j.driver.types.Node;
import org.neo4j.driver.types.Path;
import org.neo4j.driver.types.Relationship;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;

/**
* Hello world!
*
*/
public class Neo4j
{
public static void main(String[] args) throws Exception {
try{
System.out.println(testBolt("Da"));
System.out.println("bolt is ok");
}catch(Exception e){
e.printStackTrace();
}
}

public static List<String> testBolt(String ask) throws Exception {
List<String> arrayList = new ArrayList<>();
List<String> myList ;
String boltUri = "bolt://yourwebsite:7687";
String user = "neo4j";
String password = "admin";
Driver driver = GraphDatabase.driver(boltUri, AuthTokens.basic(user, password));
Session session = driver.session();
Transaction tx = session.beginTransaction();

//Result result = tx.run("match p=(a:api_name)-[*]-() where a.name contains '" + ask+ "' return distinct p");
//match p=(a:api_name)-[*..4]-(b:api_name) where a.name contains 'Da' RETURN DISTINCT p
Result result = tx.run("MATCH p=(a:api_name)-[*..4]-(b:api_name) where a.name contains '" + ask+ "' return p");
List<Record> list=result.list();
System.out.println(list.size());
for (Record r : list) {
List<String> keys = r.keys();

for (String key : keys) {
Value val = r.get(key);
System.out.println(val);
Path path = val.asPath();
System.out.println("- -");
for (Path.Segment segment : path) {
System.out.println(segment.start().get("name"));
arrayList.add(segment.start().get("name").toString());
System.out.println(segment.end().get("name"));
arrayList.add(segment.end().get("name").toString());

}
System.out.println("------------ ---------");

}
}

tx.close();
session.close();
driver.close();
myList = arrayList.stream().distinct().collect(Collectors.toList());
return myList;
}

}


java neo4j所需依赖

<dependencies>
<!-- https://mvnrepository.com/artifact/org.neo4j.driver/neo4j-java-driver -->
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver</artifactId>
<version>4.1.1</version>
</dependency>

</dependencies>