neo4j apoc 系列
Neo4j APOC-01-图数据库 apoc 插件安装 neo4j on windows10
Neo4j APOC-03-图数据库 apoc 实战使用使用
Neo4j APOC-04-图数据库 apoc 实战使用使用 apoc.path.spanningTree 最小生成树
如何安装 APOC 插件
安装 Neo4j 的 APOC 插件的步骤相对简单,具体取决于你使用的是哪种 Neo4j 版本(例如 Neo4j Desktop、Neo4j Aura 或 Neo4j 服务器)。
以下是不同环境下安装 APOC 插件的步骤:
1. Neo4j Desktop 安装 APOC 插件
Neo4j Desktop 是一个桌面版的 Neo4j 安装工具,安装和管理 APOC 插件非常简单。
发现不太行,一直安装无响应。
步骤:
- 打开 Neo4j Desktop 应用。
- 在左侧的 Projects 面板中,选择你要使用的 Database,然后点击该数据库旁边的 Settings 按钮(齿轮图标)。
- 在弹出的设置页面中,找到 Plugins 选项卡。
- 在插件列表中,找到 APOC 插件。如果没有显示,请确保 Neo4j Desktop 已连接到互联网。
- 点击 Install 按钮安装 APOC 插件。安装完成后,它将自动启用。
- 安装完成后,你可以在 Database 面板中看到 APOC 插件已启用。
3. Neo4j 服务器版安装 APOC 插件
对于自托管的 Neo4j 服务器,安装 APOC 插件需要手动操作。
你需要将 APOC 插件文件放入 Neo4j 的插件目录,并修改配置文件来启用它。
参考文档:https://neo4j.com/docs/apoc/5/overview/
步骤:
- 下载 APOC 插件:
CALL dbms.components() YIELD name, versions
RETURN name, versions;
结果:
╒══════════════╤══════════╕
│name │versions │
╞══════════════╪══════════╡
│"Neo4j Kernel"│["5.12.0"]│
└──────────────┴──────────┘
我的 neo4j 版本是 5.12.0,对应的版本可以在文档查看
对应的版本为:
https://github.com/neo4j/apoc/releases/tag/5.12.0
-
将 APOC 插件复制到 Neo4j 插件目录:
- 将下载的
apoc-x.x.x-all.jar
文件复制到 Neo4j 的plugins
目录。
默认路径:
- 对于 Linux/macOS:
/var/lib/neo4j/plugins/
- 对于 Windows:
C:\Program Files\Neo4j\neo4j-community-x.x.x\plugins\
- 将下载的
我的本地是:
C:\Users\dh\.Neo4jDesktop\relate-data\dbmss\dbms-95030949-1290-4c0a-867e-fd9f9aac13d6\plugins
- 修改 Neo4j 配置文件:
- 打开 Neo4j 的配置文件
neo4j.conf
。这个文件通常位于conf
目录中,路径类似于:- 对于 Linux/macOS:
/etc/neo4j/neo4j.conf
或/var/lib/neo4j/conf/neo4j.conf
- 对于 Windows:
C:\Program Files\Neo4j\neo4j-community-x.x.x\conf\neo4j.conf
- 对于 Linux/macOS:
- 打开 Neo4j 的配置文件
比如我的是在 :
C:\Users\dh\.Neo4jDesktop\relate-data\dbmss\dbms-95030949-1290-4c0a-867e-fd9f9aac13d6\conf
-
在配置文件中添加以下行,启用 APOC 插件:
dbms.security.procedures.unrestricted=apoc.* dbms.security.procedures.allowlist=apoc.*
这里我加了这两个,如果有多个,逗号隔开。
启动的时候失败了,发现以前有这个配置,改一下:
dbms.security.procedures.unrestricted=jwt.security.*,apoc.*
- 重启 Neo4j:
- 保存配置文件并重启 Neo4j 服务器。你可以通过命令行重启 Neo4j:
- 对于 Linux/macOS:
sudo systemctl restart neo4j
- 对于 Windows,使用 Neo4j Desktop 或服务管理工具进行重启。
- 对于 Linux/macOS:
- 保存配置文件并重启 Neo4j 服务器。你可以通过命令行重启 Neo4j:
- 验证安装:
- 你可以通过执行以下 Cypher 查询来验证 APOC 插件是否安装成功:
RETURN apoc.version()
- 如果安装成功,它会返回 APOC 的版本号。
- 你可以通过执行以下 Cypher 查询来验证 APOC 插件是否安装成功:
返回
"5.12.0"
入门的例子
我们不能到这里就结束了,我们入门体验一下。
数据初始化
// Create nodes for people
CREATE (alice:Person {name: 'Alice', age: 30}),
(bob:Person {name: 'Bob', age: 25}),
(carol:Person {name: 'Carol', age: 35}),
(dave:Person {name: 'Dave', age: 40});
创建关系
// 假设已经有了 Person 节点
MATCH (alice:Person {name: 'Alice'}), (bob:Person {name: 'Bob'})
CREATE (alice)-[:FRIEND]->(bob);
// 创建更多的关系
MATCH (bob:Person {name: 'Bob'}), (carol:Person {name: 'Carol'})
CREATE (bob)-[:FRIEND]->(carol);
MATCH (alice:Person {name: 'Alice'}), (carol:Person {name: 'Carol'})
CREATE (alice)-[:FRIEND]->(carol);
MATCH (carol:Person {name: 'Carol'}), (dave:Person {name: 'Dave'})
CREATE (carol)-[:FRIEND]->(dave);
APOC
CALL apoc.help('') YIELD name
RETURN name
查看所有的方法。
expand
apoc.path.expand
参数签名如下:
startNode
:起始节点relFilter
:关系类型过滤器labelFilter
:标签过滤器minDepth
:最小深度maxDepth
:最大深度
在你的查询中,你缺少了 labelFilter
参数。根据你提供的查询,你应该添加一个空字符串 ''
作为 labelFilter
参数,如下所示:
MATCH (start:Person {name: 'Alice'})
CALL apoc.path.expand(start, 'FRIEND', '', 1, 1) YIELD path
RETURN path;
这里,我将 minDepth
设置为1,maxDepth
设置为5,这意味着你将从Alice开始,沿着 ‘FRIEND’ 关系类型,寻找1到1跳的路径。
labelFilter
参数设置为空字符串,表示不对节点标签进行过滤。
结果:
╒══════════════════════════════════════════════════════════════════════╕
│path │
╞══════════════════════════════════════════════════════════════════════╡
│(:Person {name: "Alice",age: 30})-[:FRIEND]->(:Person {name: "Carol",a│
│ge: 35}) │
├──────────────────────────────────────────────────────────────────────┤
│(:Person {name: "Alice",age: 30})-[:FRIEND]->(:Person {name: "Bob",age│
│: 25}) │
└──────────────────────────────────────────────────────────────────────┘