安装
APOC Extended 可以通过以下部分所述的方法之一下载。
Neo4j Server
由于 APOC 依赖于 Neo4j 的内部 API,您需要使用与您的 Neo4j 安装版本**匹配的 APOC 版本**。
APOC 使用一致的版本编号方案:<neo4j 版本>.<apoc>
版本。版本号末尾的 <apoc>
部分会随每个 APOC 版本发布而增加。
请确保 Neo4j 和 APOC 的**前两位版本号匹配**。
请[点击此处](https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases)查看所有 APOC Extended 版本并下载二进制 jar 文件,将其放入您的 $NEO4J_HOME/plugins
文件夹中。
将 jar 文件移动到 plugins 文件夹后,您需要使用 neo4j restart
命令重启 Neo4j。
版本兼容性矩阵
APOC 使用一致的版本编号方案:<neo4j 版本>.<apoc>
版本。版本号末尾的 <apoc>
部分会随每个 APOC 版本发布而增加。
版本兼容性矩阵解释了 Neo4j 和 APOC 版本之间的映射关系
apoc 版本 | neo4j 版本 |
---|---|
5.26.6 (5.26.x) |
|
5.25.0 (5.25.x) |
|
5.24.0 (5.24.x) |
|
5.23.0 (5.23.x) |
|
5.22.0 (5.22.x) |
|
5.21.0 (5.21.x) |
|
5.20.0 (5.20.x) |
|
5.19.0 (5.19.x) |
|
5.18.0 (5.18.x) |
|
5.17.0 (5.17.x) |
|
5.16.0 (5.16.x) |
|
5.15.0 (5.15.x) |
|
5.14.0 (5.14.x) |
|
5.13.0 (5.13.x) |
|
5.12.0 (5.12.x) |
|
5.11.0 (5.11.x) |
|
5.10.0 (5.10.x) |
|
5.9.0 (5.9.x) |
|
5.8.0 (5.8.x) |
|
5.7.0 (5.7.x) |
|
5.6.0 (5.6.x) |
|
5.5.0 (5.5.x) |
|
5.4.0 (5.4.x) |
|
5.3.0 (5.3.x) |
|
5.2.0 (5.2.x) |
|
5.1.0 (5.1.x) |
|
4.4.0 (4.4.x) |
如果错误地插入了与 Neo4j 版本不兼容的 jar 文件,neo4j.log
中将出现如下 log.warn
警告信息
The apoc version (<APOC_VERSION>) and the Neo4j DBMS versions [NEO4J_VERSION] are incompatible.
See the compatibility matrix in https://neo4j.ac.cn/labs/apoc/4.4/installation/ to see the correct version
Neo4j Desktop
APOC Extended 无法通过 Plugins
选项卡安装。当前的 "APOC" 框安装的是 APOC Core,即

要安装 APOC Extended,您必须从此处下载兼容版本,并手动将其放入 $NEO4J_HOME/plugins
文件夹。
Docker
APOC Extended 可以通过设置 NEO4J_PLUGINS=apoc-extended
环境变量与Neo4j Docker 镜像一起使用。
如果使用此环境变量,APOC Extended 插件将在运行时下载并配置。
此功能旨在方便在开发环境中使用 APOC,但不建议在生产环境中使用。 |
docker run \
-p 7474:7474 -p 7687:7687 \
-v $PWD/data:/data -v $PWD/plugins:/plugins \
--name neo4j-apoc \
-e NEO4J_apoc_export_file_enabled=true \
-e NEO4J_apoc_import_file_enabled=true \
-e NEO4J_apoc_import_file_use__neo4j__config=true \
-e NEO4J_PLUGINS=\[\"apoc-extended\"\] \
neo4j:{neo4j-version}
这仅安装 APOC Extended 库,要同时下载 APOC Extended 和 APOC Core,请指定: |
运行此命令后,您应该在输出中看到以下两行
Fetching versions.json for Plugin 'apoc' from https://neo4j-contrib.github.io/neo4j-apoc-procedures/versions.json
Installing Plugin 'apoc' from https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases/download/5.26.1/5.26.1-extended.jar to /plugins/apoc.jar
在生产环境中,我们应该下载与我们的 Neo4j 版本匹配的APOC 版本,将其复制到本地文件夹,并将其作为数据卷挂载到 /plugins
。
plugins
目录,然后将该文件夹挂载到 Neo4j Docker 容器。mkdir plugins
pushd plugins
wget https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases/download/5.26.1/apoc-5.26.1-extended.jar
popd
docker run --rm -e NEO4J_AUTH=none -p 7474:7474 -v $PWD/plugins:/plugins -p 7687:7687 neo4j:5.0
如果您想将自定义的 APOC 配置传递给您的 Docker 实例,可以使用环境变量,如下所示:
docker run \
-p 7474:7474 -p 7687:7687 \
-v $PWD/data:/data -v $PWD/plugins:/plugins \
--name neo4j-apoc \
-e NEO4J_apoc_export_file_enabled=true \
-e NEO4J_apoc_import_file_enabled=true \
-e NEO4J_apoc_import_file_use__neo4j__config=true \
neo4j
Maven 仓库
在 Maven 项目的 pom.xml
文件中,您可以从Maven Repository 添加以下两个依赖项:
<dependency>
<groupId>org.neo4j.procedure</groupId>
<artifactId>apoc-extended</artifactId>
<version>5.26.1</version>
<classifier>extended</classifier>
</dependency>
或者,您可以从此处下载 jar 文件并将其放入 plugin
文件夹。
加载和解除限制
APOC Extended 库包含 150 多个函数和存储过程。
**不**建议将所有这些函数和存储过程加载到 DBMS 中,而应遵循最小权限原则。该原则要求您仅加载执行查询所需的函数和存储过程。
应加载的存储过程和函数可以使用 $NEO4J_HOME/conf/neo4j.conf
中的 Neo4j 配置设置 dbms.security.procedures.allowlist
进行指定。例如,要加载 apoc.load.csv
和 apoc.cypher
包中的所有函数,请使用 dbms.security.procedures.allowlist=apoc.load.csv,apoc.cypher.*
。
请注意,如果安装了APOC Core 插件,使用例如 apoc.cypher.
也会加载 the `apoc.cypher.
Core 存储过程/函数,以及可能使用相同包的其他插件。
此设置的默认值是 *
。这意味着如果您未明确指定值(或未指定值),则将加载 plugins 目录中的所有 APOC 存储过程和函数以及其他潜在的库。
出于安全原因,使用内部 API 的存储过程和函数默认处于禁用状态。在这种情况下,也建议遵循最小权限原则,仅解除您确定要使用的存储过程和函数的限制。可以使用 $NEO4J_HOME/conf/neo4j.conf
中的 Neo4j 配置设置 dbms.security.procedures.unrestricted
来解除存储过程和函数的限制。例如,如果您需要解除对 apoc.ttl.expire
和 apoc.ttl.expireIn
的限制,请使用:dbms.security.procedures.unrestricted=apoc.ttl.expire,apoc.ttl.expireIn
。
在使用 Neo4j Docker 容器时解除整个 APOC 函数和存储过程包的限制,您需要修改 Docker 环境变量。例如,如果您需要添加完整的 apoc.custom
包,请在 docker run …
命令中添加 -e NEO4J_dbms_security_procedures_unrestricted=apoc.custom.\\\*
。三个反斜杠是必需的,以防止通配符展开。
请注意,如果您安装了 APOC Core,dbms.security.procedures.allowlist
也是如此,因此设置 dbms.security.procedures.unrestricted=package.name.*
将同时解除 Extended 和 Core 存储过程/函数的限制。