共计 4440 个字符,预计需要花费 12 分钟才能阅读完成。
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
systemctl start docker
2、拉取 neo4j 镜像
docker pull neo4j:5.7.0
3、运行 neo4j 容器
docker run -it --publish=7474:7474 --publish=7687:7687 --volume=/root/neo4j-data:/data neo4j:5.7.0
4、安全组放开 7474,7687 端口
-
第一个是 7474:7474 端口映射,浏览器的访问的端口映射到 docker 容器里面的 7474 端口
-
第二个是 7687:7687 端口映射,bolt 数据访问接口
5、Neo4j 数据操作
访问 localhost:7474 就能访问 neo4j 的主页,默认登录密码是neo4j/neo4j,首次登录后会要求修改默认密码。
创建业务 - 节点
CREATE (n:ym {name:'A 业务',firstDeploy:'2023-4-25'});
CREATE (n:ym {name:'B 业务',firstDeploy:'2023-4-25'});
CREATE (n:ym {name:'小程序业务',firstDeploy:'2023-4-25'});
CREATE (n:ym {name:'移动端业务',firstDeploy:'2023-4-25'});
CREATE (n:ym {name:'大数据业务',firstDeploy:'2023-4-25'});
这是一个 Cypher 查询语句,用于在图形数据库中创建一个名为“ym”的节点,并将其标记为“A 业务”。在节点的属性中,该节点具有一个名为“name”的属性,值为“A 业务”。还有一个名为“firstDeploy”的属性,值为“2023-4-25”。
可以在后面加 return n 就会在 neo4j 中显示创建好该节点的图,不加只创建点,不展示图。
创建数据库 - 节点
create (n:mysql {name:'mysql-02',IP:'192.168.10.1'});
create (n:mysql{name:'mysql-05',IP:'192.168.45.23'});
create (n:mysql {name:'mysql-01',IP:'192.168.34.78'});
create (n:mysql {name:'mysql-03',IP:'192.168.67.3'});
create (n:mysql{name:'mysql-04',IP:'192.168.93.56'});
create (n:mysql {name:'mysql-06',IP:'192.168.134.8'});
create (n:mysql {name:'mysql-07',IP:'192.168.63.1'});
create (n:mysql{name:'mysql-08',IP:'192.168.92.23'});
create (n:mysql {name:'mysql-09',IP:'192.168.15.178'});
create (n:redis {name:'redis-01',IP:'192.168.20.2'});
create (n:redis {name:'redis-16',IP:'192.168.60.8'});
create (n:redis {name:'redis-02',IP:'192.168.134.8'});
创建 ES- 节点
create (n:es {name:'es-01',nodeip:'192.168.7.8'}) ;
创建业务之间的关系 - 边
match (a:ym {name:'A 业务'}), (b:ym {name:'B 业务'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'B 业务'}), (b:ym {name:'A 业务'}) MERGE (a)-[: 调用]->(b) ;
match (a:ym {name:'小程序业务'}), (b:ym {name:'B 业务'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'大数据业务'}), (b:ym {name:'B 业务'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'小程序业务'}), (b:ym {name:'移动端业务'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'B 业务'}), (b:ym {name:'大数据业务'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'移动端业务'}), (b:ym {name:'A 业务'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'移动端业务'}), (b:ym {name:'大数据业务'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'大数据业务'}), (b:ym {name:'A 业务'}) MERGE (a)-[: 调用]->(b);
创建业务和 MYSQL 数据库之间的关系 - 边
match (a:ym {name:'A 业务'}), (b:mysql {name:'mysql-02'}) MERGE (a)-[: 读写]->(b);
match (a:ym {name:'A 业务'}), (b:mysql {name:'mysql-01'}) MERGE (a)-[: 读]->(b);
match (a:ym {name:'B 业务'}), (b:mysql {name:'mysql-01'}) MERGE (a)-[: 读写]->(b);
match (a:ym {name:'B 业务'}), (b:mysql {name:'mysql-03'}) MERGE (a)-[: 读写]->(b);
match (a:ym {name:'大数据业务'}), (b:mysql {name:'mysql-01'}) MERGE (a)-[: 读]->(b);
match (a:ym {name:'移动端业务'}), (b:mysql {name:'mysql-04'}) MERGE (a)-[: 读写]->(b);
match (a:ym {name:'移动端业务'}), (b:mysql {name:'mysql-05'}) MERGE (a)-[: 读写]->(b);
match (a:ym {name:'小程序业务'}), (b:mysql {name:'mysql-06'}) MERGE (a)-[: 读写]->(b);
match (a:ym {name:'小程序业务'}), (b:mysql {name:'mysql-04'}) MERGE (a)-[: 读写]->(b);
match (a:ym {name:'B 业务'}), (b:mysql {name:'mysql-05'}) MERGE (a)-[: 读]->(b);
match (a:ym {name:'大数据业务'}), (b:mysql {name:'mysql-07'}) MERGE (a)-[: 读写]->(b);
match (a:ym {name:'移动端业务'}), (b:mysql {name:'mysql-08'}) MERGE (a)-[: 读写]->(b);
match (a:ym {name:'A 业务'}), (b:mysql {name:'mysql-09'}) MERGE (a)-[: 读写]->(b);
创建业务和 redis 数据库之间的关系 - 边
match (a:ym {name:'A 业务'}), (b:redis
{name:'redis-01'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'大数据业务'}), (b:redis
{name:'redis-02'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'B 业务'}), (b:redis
{name:'redis-16'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'移动端业务'}), (b:redis
{name:'redis-01'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'小程序业务'}), (b:redis
{name:'redis-01'}) MERGE (a)-[: 调用]->(b);
创建业务和 ES 之间的关系 - 边
match (a:ym {name:'A 业务'}), (b:es
{name:'es-01'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'B 业务'}), (b:es
{name:'es-01'}) MERGE (a)-[: 调用]->(b);
常用命令
对节点增加属性
match (n) where id(n)=48 set n.sex = '男' return n;
查询所有结果
MATCH (n) RETURN n;
查询所有对外有关系的节点,只有业务会互相调用,只有业务是调用其他的数据库等组件的才显示
MATCH (n)-->() RETURN n;
查询所有读写和读 mysql:mysql-01 的业务
MATCH (a:ym)-[: 读写]->(b:mysql {name:'mysql-01'}) RETURN a,b;
MATCH (a:ym)-[: 读写 | 读]->(b:mysql {name:'mysql-01'}) return a,b;
查询和 A 业务 有调用的 其他业务
MATCH (a:ym {name:'A 业务'}) <- [: 调用]-> (b:ym) RETURN a,b;
查询所有关系为调用的结果
MATCH (n)-[: 调用]-() RETURN n;
删除某个节点
MATCH (n:mysql{name:'lanqiao-es'}) DELETE n;
清理所有数据
MATCH (n) DETACH DELETE n;