neo4j 简单使用
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
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
neo4j快速手册
https://www.jianshu.com/p/a217a0b5fb83
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>