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

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

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

PentesterX发布于 2026/4/6更新于 2026/5/2516 浏览
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 文件
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 特殊儿童干预:基于 VoxCPM-1.5-TTS 的辅助沟通系统实践
  • 基于 YOLO12 的无人机航拍视角目标检测系统
  • 基于 LLaMA-Factory 微调 Qwen3-VL 视觉模型实战指南
  • C++ 智能指针:使用场景、实现原理与内存泄漏防治
  • Java util 包学习笔记一
  • 机器人 DH 参数模型与正运动学
  • AR 开发入门指南:从零构建增强现实应用
  • ESP32 开发环境搭建与 ESP-IDF 固件配置指南
  • iRobotCAM 机器人离线编程软件在激光加工中的高精度应用解析
  • Metric3D v2: 零样本单目度量深度与表面法线估计基础模型
  • 基于 Rokid 灵珠平台搭建旅游 AR 智能体实战指南
  • DeepSeek-OCR-WEBUI 部署指南:低显存高吞吐文档处理方案
  • 通义千问2.5-7B代码生成能力评测:与GitHub Copilot对比
  • Python 包管理新范式:极速工具 uv 解析与实战
  • AI 生成代码时代,人类开发者如何保持创意价值?
  • Whisper Large-V3-Turbo 语音识别技术解析与落地
  • AIGC 与艺术创作:机遇与变革
  • 吴恩达与 OpenAI 大模型开发指南:从 Prompt 工程到 LangChain 应用
  • Python 实现 Windows 开机自动启动程序及打开网页
  • 基于 Dify 平台在 Flexus 云服务器上部署 AI Agent 实战

相关免费在线工具

  • 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