跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava算法

Neo4j 图数据库入门与实战指南

Neo4j 图数据库入门与实战指南涵盖安装部署、CQL 核心语法、复杂路径查询及 Spring Boot 集成方案。重点解析节点关系创建、索引约束设置、数据备份恢复流程,并提供常用配置文件参数说明,适合快速上手图数据库开发。内容包含 Windows 与 Docker 安装方式,详细展示 CREATE、MATCH、MERGE 等关键命令用法,以及变量长度路径和最短路径算法的实际应用。

PentesterX发布于 2026/4/6更新于 2026/9/965 浏览
Neo4j 图数据库入门与实战指南

Neo4j 图数据库入门与实战指南

一、安装部署

1. Windows 环境安装

准备环境

新版 Neo4j 通常依赖 JDK 17 及以上版本,请确保本地已配置好 Java 环境。

下载与解压

访问官方部署中心下载对应系统的社区版。解压后进入 bin 目录即可运行。

启动服务

直接执行 neo4j.bat console 在控制台查看日志。启动成功后,浏览器访问 http://localhost:7474/。 首次登录默认账号密码为 neo4j/neo4j,系统会强制要求修改为新密码。

2. Docker 快速部署

使用容器化方式可以避免环境冲突,命令如下:

docker pull neo4j:3.5.22-community
docker run -d \
  -p 7474:7474 -p 7687:7687 \
  --name neo4j \
  -e "NEO4J_AUTH=neo4j/123456" \
  -v /usr/local/soft/neo4j/data:/data \
  -v /usr/local/soft/neo4j/logs:/logs \
  -v /usr/local/soft/neo4j/conf:/var/lib/neo4j/conf \
  -v /usr/local/soft/neo4j/import:/var/lib/neo4j/import \
  neo4j:3.5.22-community

二、CQL 核心语法

Cypher 是 Neo4j 的查询语言,设计初衷就是直观表达图结构关系。

1. 创建节点与属性

使用 CREATE 语句定义节点及其标签(Label)和属性(Properties)。标签类似于数据库中的表名,用于分类索引。

-- 创建基础节点
CREATE (stu:Student), (tea:Teacher)

-- 创建带属性的节点
CREATE (zhangsan:Student { id: 1, name: 'zhangsan', age: 13 })

2. 查询数据

MATCH 配合 RETURN 是最基础的查询组合。如果不加 RETURN,查询结果会被丢弃且可能报错。

-- 匹配所有学生节点并返回
MATCH (s:Student) RETURN s

-- 只返回特定属性
MATCH (s:Student) RETURN s.id, s.name, s.age

3. 条件过滤

WHERE 子句用于筛选数据,支持逻辑运算符如 AND, OR, IS NOT NULL 等。

-- 多条件查询
MATCH (emp:Employee)
WHERE emp.name = 'Abc' OR emp.name = 'Xyz'
RETURN emp

-- 处理空值
MATCH (e:Employee)
WHERE e.id IS NOT NULL
RETURN e.id, e.name

4. 关系操作

图数据库的核心在于关系。可以使用 CREATE 连接两个已知或新创建的节点。

-- 创建单向关系
CREATE (d:Dog)-[r:Like]->(c:Cat)

-- 创建带属性的关系
MATCH (d:Dog), (c:Cat)
WHERE d.name = 'dog1' AND c.name = 'cat1'
CREATE (d)-[r:love {info: 'loveit'}]->(c)
RETURN r

5. 更新与删除

SET 用于添加或更新属性, 删除节点或关系, 移除标签或属性。

DELETE
REMOVE
-- 更新属性
MATCH (book:Book)
SET book.title = 'superstar'
RETURN book

-- 删除关系
MATCH (d)-[r:love]->(c)
DELETE r

-- 移除标签
MATCH (m:Movie:Pic)
REMOVE m:Pic

6. 排序与分页

ORDER BY 控制结果顺序,LIMIT 和 SKIP 实现分页效果。

-- 按薪资降序排列
MATCH (emp:Employee)
RETURN emp.empid, emp.salary
ORDER BY emp.salary DESC

-- 分页:跳过前 10 条,取 5 条
MATCH (emp:Employee)
RETURN emp SKIP 10 LIMIT 5

7. 合并与去重

MERGE 是 MATCH 和 CREATE 的结合体,如果模式存在则匹配,不存在则创建,常用于幂等操作。

-- 确保节点存在
MERGE (p:Profile {id: 1})

-- 去重查询
MATCH (n) RETURN DISTINCT n.name LIMIT 25

8. 索引与约束

为了提高查询效率,建议在常用属性上建立索引;唯一约束可防止重复数据。

-- 创建索引
CREATE INDEX ON :Customer(name)

-- 创建唯一约束
CREATE CONSTRAINT ON (cc:CreditCard) ASSERT cc.number IS UNIQUE

三、常用函数

1. 字符串处理

Neo4j 内置了丰富的字符串函数,如 UPPER, LOWER, SUBSTRING, REPLACE 等。

MATCH (e:Employee)
RETURN UPPER(e.name), SUBSTRING(e.name, 0, 2)

2. 聚合函数

类似 SQL 的 GROUP BY,可对路径上的节点进行计数或求和。

MATCH (p:Person)-[:KNOWS]->(f:Person)
RETURN p.name, count(f)

四、备份与恢复

生产环境中定期备份至关重要。需先停止服务再进行文件级操作。

# 停止服务
./neo4j stop

# 导出备份
./neo4j-admin dump --database=graph.db --to=/home/backup.dump

# 启动服务
./neo4j start

恢复时同样需要停止服务,并使用 load 命令导入。

./neo4j-admin load --from=/home/backup.dump --database=graph.db --force

五、复杂路径查询

图数据库的优势在于处理多层关联关系。

1. 变量长度路径

使用 [*..N] 表示最多 N 层的关系。

-- 查找 Alice 最多 3 层关系内的其他 Person
MATCH (p1:Person {name: 'Alice'})-[*..3]-(p2:Person)
WHERE p1 <> p2
RETURN p1, p2

2. 最短路径

shortestPath 函数用于寻找两点间的最短连接。

MATCH (p1:Person {name: 'Alice'}), (p2:Person {name: 'Bob'})
MATCH path = shortestPath((p1)-[*]-(p2))
RETURN path

3. 过滤路径节点类型

结合 ALL 谓词可以限制路径中间经过的节点类型。

MATCH (p1:Person {name: 'Alice'})-[*..3]-(p2:Person)
WHERE ALL(n IN nodes(path) WHERE n:Person)
RETURN p1, p2

六、Spring Boot 集成

在 Java 项目中集成 Neo4j 非常方便,主要涉及依赖引入和配置。

1. Maven 依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>

2. 配置文件

spring.neo4j.uri=bolt://localhost:7687
spring.neo4j.authentication.username=neo4j
spring.neo4j.authentication.password=your_password

七、配置参考

以下是 neo4j.conf 中常用的关键配置项说明,可根据实际需求调整。

# 数据库名称,默认为 graph.db
dbms.active_database=graph.db

# 数据存储路径
# dbms.directories.data=data

# 允许非本地连接(生产环境慎用)
dbms.connectors.default_listen_address=0.0.0.0

# Bolt 协议端口
dbms.connector.bolt.listen_address=:7687

# HTTP 管理界面端口
dbms.connector.http.listen_address=:7474

# 禁用认证(仅开发测试环境)
# dbms.security.auth_enabled=false

# JVM 堆内存设置
# dbms.memory.heap.initial_size=512m
# dbms.memory.heap.max_size=1g

# 启用 G1GC 垃圾回收器
dbms.jvm.additional=-XX:+UseG1GC

# 允许从文件系统加载 CSV 文件
dbms.security.allow_csv_import_from_file_urls=true

注:以上示例基于 Neo4j 社区版编写,具体版本差异请以官方文档为准。

目录

  1. Neo4j 图数据库入门与实战指南
  2. 一、安装部署
  3. 1. Windows 环境安装
  4. 准备环境
  5. 下载与解压
  6. 启动服务
  7. 2. Docker 快速部署
  8. 二、CQL 核心语法
  9. 1. 创建节点与属性
  10. 2. 查询数据
  11. 3. 条件过滤
  12. 4. 关系操作
  13. 5. 更新与删除
  14. 6. 排序与分页
  15. 7. 合并与去重
  16. 8. 索引与约束
  17. 三、常用函数
  18. 1. 字符串处理
  19. 2. 聚合函数
  20. 四、备份与恢复
  21. 停止服务
  22. 导出备份
  23. 启动服务
  24. 五、复杂路径查询
  25. 1. 变量长度路径
  26. 2. 最短路径
  27. 3. 过滤路径节点类型
  28. 六、Spring Boot 集成
  29. 1. Maven 依赖
  30. 2. 配置文件
  31. 七、配置参考
  32. 数据库名称,默认为 graph.db
  33. 数据存储路径
  34. dbms.directories.data=data
  35. 允许非本地连接(生产环境慎用)
  36. Bolt 协议端口
  37. HTTP 管理界面端口
  38. 禁用认证(仅开发测试环境)
  39. dbms.security.auth_enabled=false
  40. JVM 堆内存设置
  41. dbms.memory.heap.initial_size=512m
  42. dbms.memory.heap.max_size=1g
  43. 启用 G1GC 垃圾回收器
  44. 允许从文件系统加载 CSV 文件

更多推荐文章

查看全部
  • 【CS创世SD NAND征文】为无人机打造可靠数据仓:工业级存储芯片CSNP32GCR01-AOW在飞控系统中的应用实践
  • 网络安全学习方向与路线详解
  • Android 应用实现自动更新下载与安装流程详解
  • 动态规划:01 背包问题详解
  • Spring Boot 日志实战指南:从入门到高级配置
  • OpenCore Legacy Patcher 旧款 Mac 升级 macOS 完整教程
  • Windows 下多 Python 环境管理与灵活切换实战指南
  • GPT-4o 发布:原生多模态模型与免费开放策略
  • CSS 布局教程:掌握主流布局方式与方案选择
  • Discord 机器人创建与配置完整流程指南
  • 鸿蒙电商购物车全栈项目:用户管理、商品列表与购物车实现
  • 2026自愈式爬虫开发:Python+AI应对页面改版
  • 前端开发:浏览器桌面通知功能实现指南
  • 初级程序员如何建立专业形象与高效沟通
  • 2019 年阿尔茨海默症预测比赛总结与经验复盘
  • 夸克网盘精选资源汇总:书籍、软件及学习教程
  • Java 最新版本详细安装与配置教程
  • Neo4j Aura Agent 正式上线:图谱驱动的智能体构建新范式
  • PX4 Offboard 控制实战:从飞行模式理解到 ROS 轨迹跟踪
  • FastGPT 集成 MCP 协议构建工具增强型智能体

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online