前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Neo4j 系列(1) —— 初识 Neo4j

Neo4j 系列(1) —— 初识 Neo4j

作者头像
求和小熊猫
发布于 2021-12-06 05:01:46
发布于 2021-12-06 05:01:46
3.1K05
代码可运行
举报
运行总次数:5
代码可运行

初识 Neo4j

文章目录

前置知识

什么是图数据库

数据库是基于图论实现的一种NoSQL数据库,其数据存储结构和数据查询方式都是以图论为基础的,图数据库主要用于存储更多的连接数据

图数据库诞生的背景

随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,急需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。

图数据库的应用场景
  • 社交领域:Facebook, Twitter,Linkedin用它来管理社交关系,实现好友推荐
  • 零售领域:eBay,沃尔玛使用它实现商品实时推荐,给买家更好的购物体验
  • 金融领域:摩根大通,花旗和瑞银等银行在用图数据库做风控处理
  • 汽车制造领域:沃尔沃,戴姆勒和丰田等顶级汽车制造商依靠图数据库推动创新制造解决方案
  • 电信领域:Verizon, Orange和AT&T 等电信公司依靠图数据库来管理网络,控制访问并支持客户
  • 酒店领域:万豪和雅高酒店等顶级酒店公司依使用图数据库来管理复杂且快速变化的库存图数据库并非指存储图片的数据库,而是以图数据结构存储和查询数据。

Neo4j

什么是 Neo4j

Neo4j是一个开源的NoSQL图形数据库,2003 年开始开发,使用 scala和java 语言,2007年开始发布。

  • 是世界上最先进的图数据库之一,提供原生的图数据存储,检索和处理;
  • 采用属性图模型(Property graph model),极大的完善和丰富图数据模型;
  • 专属查询语言 Cypher,直观,高效;

Neo4j 的官网链接:https://neo4j.com/

Neo4j 的安装

Neo4J 官网的下载地址 https://neo4j.com/download-center/#community

1. Linux 的安装
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 首先进入Neo4J 需要安装的目录,然后上传 Neo4J 的压缩包并且解压
cd /usr/local/
# 解压 Neo4J 的压缩包
tar -zxf neo4j-community-3.5.30-unix.tar
# 进入 Neo4J 的目录
cd neo4j-community-3.5.30/
# 修改配置文件
vi conf/neo4j.conf
# =============== 修改注释 ================
# 将下列内容前的注释给去掉,以便其他机器可以建立连接
dbms.connectors.default_listen_address=0.0.0.0
dbms.connector.bolt.tls_level=OPTIONAL
dbms.connector.bolt.listen_address=:7687
dbms.connector.http.listen_address=:7474
dbms.connector.https.listen_address=:7473
#======================================
# 启动 neo4j
bin/neo4j console

随后便可以在浏览器中直接使用 http://{ip_address}:7474/browser/ 便可以进行访问

PS: Neo4j 4.X 版本需要 java 11 以上

2. Docker 的安装
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 拉取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

Neo4j 的使用 (Cypher QL)

1. Neo4j 的构建元素

标签 标签(Label)将一个公共名称与一组节点或关系相关联, 节点或关系可以包含一个或多个标签。 我们可以为现有节点或关系创建新标签, 我们可以从现有节点或关系中删除标签。标签用冒号表示例如 :label

节点

节点(Node)是图数据库中的一个基本元素,用来表示一个实体记录,就像关系数据库中的一条记录一样。在Neo4j中节点可以包含多个属性(Property)和多个标签(Label)。

节点在 CQL 一般用小括号来表示,例如 (p:Product)

关系

关系(Relationship)同样是图数据库的基本元素。当数据库中已经存在节点后,需要将节点连接起来构成图。关系就是用来连接两个节点,关系也称为图论的边(Edge) ,其始端和末端都必须是节点,关系不能指向空也不能从空发起。关系和节点一样可以包含多个属性,但关系只能有一个类型(Type) 。

基于方向性,Neo4j关系被分为两种主要类型:

  • 单向关系 单向关系用 ()-[]->() 来表示
  • 双向关系 双向关系用 ()-[]-() 来表示

属性

属性(Property)是用于描述图节点和关系的键值对。其中Key是一个字符串,值可以通过使用任何Neo4j数据类型来表示。属性用大括号来表示。例如 {key:value}

Cypher QL 的使用

创建节点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建单个节点
create (p)
# 创建多个节点
create (q),(r)
# 创建带有标签的节点
create (a:label_a)
# 创建多标签节点
create (n:label_a:laberl_b)
# 创建带有标签属性的节点
create (n:person {name:'如来'})
# 创建节点还可以使用关键字 MERGE,即以合并的方式来创建。在使用这种方式创建节点时,将会检查节点存在与否,如果节点已经存在,则使用已有的节点;如果节点不存在,则创建一个新节点。
MERGE(n:Test {name:"c"}ON CREATE SET n.created = timestamp()

创建关系

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#使用新节点创建关系
CREATE (n:person {name:'杨戬'})-[r:师傅]->(m:person {name:'玉鼎真人'}) return type(r)
#使用已知节点创建带属性的关系
match (n:person {name:'沙僧'}),(m:person{name:'唐僧'}) create (n)-[r:`师傅`{relation:'师傅'}]->(m) return r

查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 依据标签查询节点
match(n:person) return n
# 依据标签属性进行查询
match(n:person {property:"value"}) return n
# 跳过前几个输出
match(n:person) return n skip 2
# 限制输出个数 
match(n:person) return n limit 2
# 显示查询节点的属性值
match(n:person) return id(n),n.name
# 使用 where 语句进行查询
match(n:person) where n.name='张三' and n.name='李四' return n
# 寻找某属性为空值的节点
match(n:person) where n.level is null return n
# 寻找属性值在某集合中的节点
match(n:person) where n.name in ['张三','李四'] return n
# 对查询结果进行排序
match(n:'person') return id(n),n.name order by id(n) desc
# 对于查询结果进行去重输出
match(n:'person') return distinct(n.name)
# 对查询结果进行统计
match(n:'person') return count(n)
# 对查询结果进行联合
match(n:'person') return n.name as name
union
match(m:'character') return m.name as name
# 检索有关系的相关节点
match (n:person)-[r]-(m:person) return n,r,m
# 使用WITH可以将上一条查询语句的结果链接起来,用于下一条查询语句之中,即起到一种管道的功能。下列查询语句使用WITH引用了MATCH子句的a和b。
MATCH(a)-[KNOWS]->(b)
WITH a,count(b)AS knows
WHERE knows > 0
RETURN a

设置属性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 按照条件搜索节点并为节点添加新的属性
MATCH (n:role {name:"fox"}) set n.age=32
# 也可以使用 unwind 语句配合 set 语句向节点中添加多个属性
UNWIND[{age:30}{addr:"sz"}] AS prop
MERGE(n:Test {name:"b"}SET n += prop

删除操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 删除节点
match (n:person {name:'张三'}) delete n
# 删除关系
match (n:person {name:'张三'})<-[r]-(m) delete r
# 删除属性
match (n:person {name:'张三'}) remove n.age

使用索引

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 为某标签的的某属性创建索引
CREATE INDEX ON :Person(name)
# 删除索引
DROP INDEX ON :Person(name)

使用约束

在Neo4j数据库中,CQL CREATE命令始终创建新的节点或关系,这意味着即使您使用相同的值,它也会插入一个新行。 根据我们对某些节点或关系的应用需求,我们必须避免这种重复。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建约束
CREATE CONSTRAINT ON(p:Person)
ASSERT p.name IS UNIQUE
# 删除约束
DROP CONSTRAINT ON(p:Person)
ASSERT p.name IS UNIQUE

最短路径

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 找到其中一条最短路径
MATCH(p1:Person { name:"观众10" }),(p2:Person { name:"观众15" }),
p = shortestpath((p1)-[*..10]-(p2))
RETURN p
# 显示所有的最短路径
MATCH(p1:Person { name:"观众10" }),(p2:Person { name:"观众15" }),
p =allshortestpaths((p1)-[*..10]-(p2)
RETURN p
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/11/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深入浅出Joern(二)CPG与图数据库
在上篇文章里,我们从Joern入手大致介绍了CPG(Code Property Graph)的设计理念和简单逻辑
LoRexxar
2023/10/17
2.4K0
深入浅出Joern(二)CPG与图数据库
​知识图谱里的知识存储:neo4j的介绍和使用
一般情况下,我们使用数据库查找事物间的联系的时候,只需要短程关系的查询(两层以内的关联)。当需要进行更长程的,更广范围的关系查询时,就需要图数据库的功能。
磐创AI
2019/08/06
9.1K1
​知识图谱里的知识存储:neo4j的介绍和使用
手把手教学小型金融知识图谱构建:量化分析、图数据库neo4j、图算法、关系预测、命名实体识别、Cypher Cheetsheet详细教学等
知识图谱存储方式主要包含资源描述框架(Resource Description Framework,RDF)和图数据库(Graph Database)。
汀丶人工智能
2023/07/08
1.6K0
手把手教学小型金融知识图谱构建:量化分析、图数据库neo4j、图算法、关系预测、命名实体识别、Cypher Cheetsheet详细教学等
喂饭教程!全网首发Neo4J可视化GraphRAG索引
GraphRAG通过结合知识图谱,增加RAG的全局检索能力。今天我将讲解如何使用Neo4J可视化GraphRAG索引的结果,以便进一步的处理、分析。本篇仍然以小说《仙逆》提取的实体为例,一图胜千言。本文分为4小节,安装neo4j、导入GraphRAG索引文件、Neo4J可视化分析和总结,所有坑都已经帮你趟过啦,放心食用。
AgenticAI
2025/03/18
4582
喂饭教程!全网首发Neo4J可视化GraphRAG索引
我的Neo4j探索之旅 - 初识Neo4j(一)
neo4j 这个东西在国内用的很少,目前能百度的资料也是很早之前的几篇了,我针对neo4j 3.5 的版本进行一次学习和记录,以及实际的工作需求我也遇到了,后续会开源一个剔除业务的开源项目,有兴趣的读者可以了解一下图数据库的中间件,还是蛮有意思的。
阿东
2021/08/16
1.9K0
我的Neo4j探索之旅 - 初识Neo4j(一)
《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!
点击上方蓝字每天学习数据库 ---- 万众瞩目的《权力的游戏》第八季,伴随着“史诗级大烂尾”的哀怨声,终于完结了! 面对剧中错综复杂的人物关系,新粉们是不是已经捋不清楚了?不过,看到人物、节点、关系、属性,这些熟悉的名词,各位想到了什么? 是的,图数据库!一向以处理“关系的连接”称霸江湖的图数据库 接下来我们试一试好玩的,用图数据库Neo4j,来梳理一下权游的人物关系图。 Ps:贴心的小编在后面奉上了Neo4j最全的安装配置教程!快快收藏起来~ 首先总览一下剧中人物关系图,几行代码就可清
腾讯云数据库 TencentDB
2019/06/03
3K0
《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!
neo4j 开发记录
如果不设置密码,那么默认密码是 neo4j/neo4j 而,不需要验证,则是配置--env NEO4J_AUTH=none
用针戳左手中指指头
2021/12/06
1.1K0
Neo4j入门
Neo4j是一个开源的图形数据库管理系统,它基于Java语言开发。与传统的关系型数据库不同,Neo4j使用图形结构来存储和查询数据,这使得它在处理复杂关系时更加高效和灵活。
半月无霜
2023/05/11
1.6K0
Neo4j入门
在Windows环境中安装Neo4j
图形数据库(Graph Database)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边(Edge)和属性(Property)组成的,顶点和边都可以设置属性,顶点也称作节点,边也称作关系,每个节点和关系都可以由一个或多个属性。Neo4j创建的图是用顶点和边构建一个有向图,其查询语言cypher已经成为事实上的标准。
大道七哥
2019/08/23
2.9K0
在Windows环境中安装Neo4j
SpringBoot整合Neo4j
最近在看美团技术团队对图谱的应用文章,觉得现在图数据库其实应用场景还是挺多的,推荐:https://tech.meituan.com/2021/07/15/construction-and-application-of-lifestyle-general-needs-net.html
是小张啊喂
2021/07/22
1.2K0
neo4j图数据库
其中:GPG(GNU Privacy Guard)是一种加密软件,用于加密通信和验证软件包的完整性和来源。在Linux系统中,软件包管理器(如yum或dnf)会使用GPG密钥来验证下载的软件包是否来自可信的源,并且没有被篡改。
@小森
2024/07/08
3102
neo4j图数据库
Neo4J超详细专题教程,快来收藏起来吧
  随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系 网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长, 急需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。 世界上很多著名的公司都在使用图数据库,比如:
用户4919348
2022/11/22
5.3K0
Neo4J超详细专题教程,快来收藏起来吧
史上最全面的Neo4j使用指南「建议收藏」
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
全栈程序员站长
2022/09/18
46.7K1
史上最全面的Neo4j使用指南「建议收藏」
开源图数据库neo4j极简教程
既然图数据库应用这么广泛,越来越多的企业和开发者开始使用它,那它究竟什么过人之处呢,下面我们来揭开它的神秘面纱。
一个会写诗的程序员
2020/04/24
3.9K0
开源图数据库neo4j极简教程
neo4j︱Cypher 查询语言简单案例(二)
版权声明:博主原创文章,微信公众号:素质云笔记,转载请注明来源“素质云博客”,谢谢合作!! https://blog.csdn.net/sinat_26917383/article/details/79850412
悟乙己
2019/05/26
2.3K0
Neo4j 之 Cypher 笔记
Cypher 是 Neo4j 提出的图查询语言,是一种声明式的图数据库查询语言,如同关系数据库中的 SQL,它拥有精简的语法和强大的表现力,能够精准且高效地对图数据进行查询和更新。
EmoryHuang
2022/10/31
1.4K0
数据库|Neo4j图库初识
图数据库有Neo4j和OrientDB,本文入门Neo4j,当前使用版本社区版本(neo4j-community-4.1.1)。
六月暴雪飞梨花
2023/11/28
3300
数据库|Neo4j图库初识
Centos7下Neo4j安装记录
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
程裕强
2019/10/22
1.1K0
Centos7下Neo4j安装记录
图数据库Neo4j学习笔记系列
作者简介:20年IT工作经验,曾在华为、HP、移动、电网等国内外知名IT企业任职;关注领域包括证券、航空、制造、电信、电网等。在数据库开发和优化、数据仓库、系统架构、大中型项目管理、部门管理、数据挖掘和分析、数据治理、大数据方面有一定研究。
jeanron100
2019/11/28
1.7K1
图数据库Neo4j学习笔记系列
Neo4j 与 Cypher 基础
Neo4j 是用 Java 实现的开源 NoSQL 图数据库。从2003年开始开发,2007年正式发布第一版,其源码托管于 GitHub。
浪漫主义狗
2023/09/26
8480
Neo4j 与 Cypher 基础
相关推荐
深入浅出Joern(二)CPG与图数据库
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验