Neo4j-APOC扩展与使用(上)

简介: Neo4j-APOC扩展与使用1.APOC简介与安装1.1 APOC简介1.2安装APOC

1.APOC简介与安装

备注:本文APOC是基于Neo4j3.5版本进行安装,原因在于本地电脑的Java版本为1.8

1.1 APOC简介

APOC的名字最早来自于2009年,英文为 “A Package Of Components”,表示Neo4j的组件库,后来变为“Awesome Procedures On Cypher”,超级棒的Cypher过程。在《黑客帝国》电影中,APOC是Neo的队友,也是飞船的驾驶员,最后被叛徒Cypher杀害。

在APOC发布之前,开发人员需要为Cypher或Neo4j数据库尚未实现的常用功能编写过程和函数。每个开发人员都可能编写所需的函数,这会导致大量的重复。针对这种需求,Neo4j官方开发了一个过程和函数的标准库,即APOC库,在Neo4j3.3版本时,APOC成为了Neo4j的标准库。APOC库是用Java实现的,由450+个过程和函数组成(还在不断更新中),用于完成数据集成、图形算法或数据转换等领域的不同任务。与电影《黑客帝国》中情节不同的是,在Neo4j中,APOC提供的过程极大的增强了Cypher的表达能力。

1.2安装APOC

APOC依赖于Neo4j的内部api,在Neo4j时,需要使用匹配的APOC版本,确保Neo4j和APOC之间的前两个版本号匹配。具体对应关系见表1-1:

表1-1 Neo4j与APOC版本对应

1)下载APOC。

在Neo4j的APOC手册中有APOC的下载地址,通过链接下载指定的APOC版本,本书选用apoc-3.5.0.11-all.jar。

2)安装APOC。

下载APOC的jar文件后,将jar文件复制到Neo4j的plugins目录下。在Windows系统下,plugins路径为D:\neo4j-community-3.5.5\plugins,在Ubuntu系统下,plugins路径为于/var/lib/neo4j/plugins。

3)修改配置文件。

在neo4j.conf 配置文件中添加:


dbms.security.procedures.unrestricted=apoc.*

该行配置语句可以完成APOC的函数和过程授权,不配置改行语句,在执行函数和过程时,可能会出现如下错误:apoc.algo.pagerank is not available due to having restricted sccess rights,check configuration。

4)重启Neo4j服务。

5)在可视化界面运行。

return apoc.version()

如果出现对应的版本号,证明安装成功。

返回值为:

│"apoc.version()" │

│"3.5.0.11" │

1.3 APOC使用

APOC提供了数据集成,数据导出,数据结构,高级图查询等诸多功能,本小节选取部分过程和函数进行演示。相比于过程,函数更容易理解,函数可以直接应用在Cypher查询中,对传入函数中的数据进行计算并返回计算后的结果,这点与Cypher内置的函数没有明显区别。过程的调用必须使用CALL命令,APOC中的过程可以类比与关系数据库中的存储过程。

1. APOC提供的过程和函数概述

APOC提供的过程与函数数量较多,在使用过程中若有需要基于APOC实现的,可以在官网手册中获得更详细的使用说明,读者在查看过程中,可以将APOC3.5版本的官网手册和APOC 4.1版本的官网手册对比阅读。APOC 4.1版的包结构如表1-2所示。

Procedures & Functions

apoc

apoc.agg

apoc.algo

apoc.any

apoc.atomic

apoc.bitwise

apoc.bolt

apoc.cluster

apoc.coll

apoc.config

apoc.convert

apoc.couchbase

apoc.create

apoc.custom

apoc.cypher

apoc.data

apoc.date

apoc.diff

apoc.do

apoc.es

apoc.example

apoc.export

apoc.generate

apoc.gephi

apoc.get

apoc.graph

apoc.hashing

apoc.import

apoc.json

apoc.label

apoc.load

apoc.lock

apoc.log

apoc.map

apoc.math

apoc.merge

apoc.meta

apoc.metrics

apoc.model

apoc.mongo

apoc.mongodb

apoc.monitor

apoc.neighbors

apoc.nlp

apoc.node

apoc.nodes

apoc.number

apoc.path

apoc.periodic

apoc.redis

apoc.refactor

apoc.rel

apoc.schema

apoc.scoring

apoc.search

apoc.spatial

apoc.static

apoc.stats

apoc.systemdb

apoc.temporal

apoc.text

apoc.trigger

apoc.ttl

apoc.util

apoc.uuid

apoc.warmup

apoc.xml

2.APOC提供的常见功能如下:

1)数据集成。

APOC库支持将各种数据格式(包括JSON、XML和XLS)导入到Neo4j数据库中,也可以从关系型数据库、Mongodb、ElasticSearch将数据导入Neo4j数据库中。这些过程大多位于apoc.load下,也有部分位于apoc.import、apoc.mongodb、apoc.es下。

2)数据导出。

Neo4j可以通过备份和转储命令导出整个数据库。但不支持导出子图或将数据导出为标准数据格式。APOC扩展了Neo4j的导出功能,Neo4j支持将数据导出为JSON、CSV、GraphML和Cypher脚本等格式。

APOC支持导出的过程大多位于apoc.export下。在将数据导出到文件系统时,可能存在权限问题,这时可以通过在

neo4j.conf中设置以下属性来启用:

apoc.export.file.enabled=true

如果没有设置这个属性,在执行导出时,将得到以下错误消息:

Failed to invoke procedure apoc.export.csv.all: Caused by: java.lang.RuntimeException: Export to files not enabled, please set apoc.export.file.enabled=true in your neo4j.conf

3)数据结构。

APOC库提供了用于操作数据结构的函数和过程,对数据结构的操作主要分为三种,分别是转换功能(ConversionFunctions),映射功能(Map Functions),集合功能(Collection Functions)。转换功能用于将值的类型强制转换,转换功能主要位于apoc.convert包下。映射功能用于对map类型进行操作,映射功能位于apoc.map包下。集合功能用于对集合和列表进行操中,主要位于apoc.coll包下。

4)时间格式操作。

APOC库提供了了对时间类型、时间戳和日期字符串值格式化的支持,这些函数主要位于apoc.temporal和apoc.date包下。

5)数学运算。

APOC提供了关于数学运算的函数和过程,具体包括数学运算功能(包括四舍五入、最大最小值等),精确计算功能,数数字格式转换功能,位运算功能。其中数学运算函数主要位于apoc.math包下,精确计算函数位于apoc.number.exact包下,数字格式转换函数位于apoc.number包下,位运算操作位于apoc.bitwise包下。

6)高级图查询。

APOC库提供的高级图查询包含:扩展路径、扩展子图、邻居功能、路径操作、关系查询、节点查询、并行节点搜索等。相关的函数或过程主要位于:apoc.path、apoc.neighbors、apoc.rel、apoc.nodes、apoc.search等包中。

7)触发器。

APOC提供了类似关系数据库中的触发器功能,触发器功能可以在创建、更新或删除Neo4j中的数据时触发。相关的函数或过程主要位于apoc.trigger中,需要注意的是,如果启用apoc.trigger

需要在$NEO4J_HOME/config/neo4j.conf中启用

apoc.trigger.enabled=true
• 1

8)文本和查找索引。

从3.5版开始,Neo4j提供了内置的、不区分大小写的、可配置的全文索引。原有的手工检索和全文检索(位于apoc.index)将逐渐被废弃。在表13-2中已经废弃apoc.index。全文索引的相关函数或过程位于apoc.schema包下。

9)图算法。

在算法方面,APOC库中提供了路径查找算法,相似性算法、社区检测算法、中心性算法等。在图算法方面,Neo4j有提供专用的图算法库Graph Algorithms Library,目前APOC库中除了路径查找算法外,其余算法将被弃用,即将被删除。如果要使用相关图算法,可使用图形算法库中的算法。路径查找算法主要位于apoc.algo包下。

相关文章
|
1月前
|
存储 NoSQL API
使用Py2neo进行Neo4j图数据库的增删改查操作
使用Py2neo进行Neo4j图数据库的增删改查操作
68 5
|
6月前
|
存储 NoSQL 关系型数据库
|
机器学习/深度学习 SQL 数据库
NEO4J的入门和一些简单的操作
> 持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第29天,[点击查看活动详情](https://juejin.cn/post/7147654075599978532 "https://juejin.cn/post/7147654075599978532") # 引言 今天我们继续学习NEO4J. # 创建 创建语句我们一般会使用create指令 我们首先在控制台上输入`neo4j.bat console`启动neo4j 然后打开你的浏览器,然后在浏览器地址栏中输入 `http://localhost:7687 - Neo4j Browser](http:
Neo4j语法2
Neo4j语法
82 0
|
数据库 数据库管理
Neo4j语法1
Neo4j语法
124 0
neo4j的一些命令
return命令
107 0
|
数据库管理
Neo4j一些命令
Neo4j的CREATE命令
85 0
Neo4j的一些命令
delete命令
103 0
|
NoSQL 数据可视化 Java
我的Neo4j探索之旅 - 初识Neo4j(一)
neo4j 这个东西在国内用的很少,目前能百度的资料也是很早之前的几篇了,我针对neo4j 3.5 的版本进行一次学习和记录,以及实际的工作需求我也遇到了,后续会开源一个剔除业务的开源项目,有兴趣的读者可以了解一下图数据库的中间件,还是蛮有意思的。
342 0
|
算法 搜索推荐
Neo4j-APOC扩展与使用(下)
Neo4j-APOC扩展与使用 1.APOC简介与安装 1.1 APOC简介 1.2安装APOC
Neo4j-APOC扩展与使用(下)