安装

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.1

5.26.6 (5.26.x)

5.25.0

5.25.0 (5.25.x)

5.24.0

5.24.0 (5.24.x)

5.23.0

5.23.0 (5.23.x)

5.22.0

5.22.0 (5.22.x)

5.21.0

5.21.0 (5.21.x)

5.20.0

5.20.0 (5.20.x)

5.19.0

5.19.0 (5.19.x)

5.18.0

5.18.0 (5.18.x)

5.17.1

5.17.0 (5.17.x)

5.16.0

5.16.0 (5.16.x)

5.15.0

5.15.0 (5.15.x)

5.14.0

5.14.0 (5.14.x)

5.13.0

5.13.0 (5.13.x)

5.12.0

5.12.0 (5.12.x)

5.11.0

5.11.0 (5.11.x)

5.10.0

5.10.0 (5.10.x)

5.9.0

5.9.0 (5.9.x)

5.8.0

5.8.0 (5.8.x)

5.7.0

5.7.0 (5.7.x)

5.6.0

5.6.0 (5.6.x)

5.5.0

5.5.0 (5.5.x)

5.4.0

5.4.0 (5.4.x)

5.3.1

5.3.0 (5.3.x)

5.2.0

5.2.0 (5.2.x)

5.1.0

5.1.0 (5.1.x)

4.4.0.33

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,即

desktop apoc

要安装 APOC Extended,您必须从此处下载兼容版本,并手动将其放入 $NEO4J_HOME/plugins 文件夹。

Docker

APOC Extended 可以通过设置 NEO4J_PLUGINS=apoc-extended 环境变量与Neo4j Docker 镜像一起使用。

如果使用此环境变量,APOC Extended 插件将在运行时下载并配置。

此功能旨在方便在开发环境中使用 APOC,但不建议在生产环境中使用。

以下示例在 Docker 容器中运行 Neo4j {neo4j-version},并使用最新版本的 APOC Extended Library
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,请指定:-e NEO4J_PLUGINS=\[\"apoc\", \"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

以下示例将 APOC Extended 库下载到 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.csvapoc.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.expireapoc.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 存储过程/函数的限制。

© . All rights reserved.