【快速上手】linux环境下Neo4j的安装与使用

一、neo4j简介 

neo4j是一个非关系型图形数据库,非常适合处理具有复杂关系的数据集

存储方式:图形化存储

特点:将结构化数据存储在图上而不是表(比如:MySQL数据库存储在表中)中

neo4j也可以看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。

数据库排名链接:https://db-engines.com/en/ranking

二、安装与配置

1.下载安装包

安装包链接:2.Index of /doc/neo4j/icon-default.png?t=O83Ahttps://we-yun.com/doc/neo4j/

注意:neo4j与jdk版本的对应关系:neo4j的版本需要与jdk版本相适配,否则容易出现安装失败

 

 2.解压安装

①将安装包拉到  /opt/modules 目录下

②解压

tar -xvf neo4j-community-3.5.8-unix.tar.gz -C /opt/installs/

③重命名

cd /opt/installs
mv neo4j-community-3.5.8/ neo4j

3.修改配置

①在安装目录下找到conf目录下的neo4j.conf文件

vi /opt/installs/neo4j/conf/neo4j.conf

 ②修改相应配置如下:

修改第22行load csv时l路径,在前面加个#,可从任意路径读取文件
#dbms.directories.import=import

修改35行和36行,设置JVM初始堆内存和JVM最大堆内存
生产环境给的JVM最大堆内存越大越好,但是要小于机器的物理内存
dbms.memory.heap.initial_size=5g
dbms.memory.heap.max_size=10g

修改46行,可以认为这个是缓存,如果机器配置高,这个越大越好
dbms.memory.pagecache.size=10g

修改54行,去掉改行的#,可以远程通过ip访问neo4j数据库
dbms.connectors.default_listen_address=bigdate01

默认 bolt端口是7687,http端口是7474,https关口是7473,不修改下面3项也可以
修改71行,去掉#,设置http端口为7687,端口可以自定义,只要不和其他端口冲突就行
#dbms.connector.bolt.listen_address=:7687

修改75行,去掉#,设置http端口为7474,端口可以自定义,只要不和其他端口冲突就行
dbms.connector.http.listen_address=:7474

修改79行,去掉#,设置http端口为7473,端口可以自定义,只要不和其他端口冲突就行
dbms.connector.https.listen_address=:7473

修改227行,去掉#,允许从远程url来load csv
dbms.security.allow_csv_import_from_file_urls=true

修改246行,允许使用neo4j-shell,类似于mysql 命令行之类的
dbms.shell.enabled=true

修改235行,去掉#,设置连接neo4j-shell的端口,一般都是localhost或者127.0.0.1,这样安全,其他地址的话,一般使用https就行
dbms.shell.host=127.0.0.1

修改250行,去掉#,设置neo4j-shell端口,端口可以自定义,只要不和其他端口冲突就行
dbms.shell.port=1337

修改254行,设置neo4j可读可写
dbms.read_only=false

4.启动/停止

进入bin目录执行./neo4j start

cd /opt/installs/neo4j/bin
./neo4j start
cd /opt/installs/neo4j/bin
./neo4j stop

5.客户端访问

http://bigdata01:7474

(http://服务器IP地址:7474)

在浏览器访问图数据库所在的机器上的7474端口

(第一次访问账号neo4j,密码neo4j,会提示修改初始密码)

三、基本CQL使用(增删改查)

neo4j有自己的语言---Cypher (借鉴了SQL的结构

和mysql数据库使用相似,最基本的使用---增删改查

Cypher是一种图数据库查询语言,专门用于Neo4j图形数据库。它是一种声明式的查询语言,借鉴了SQL的结构,旨在以简洁的语法和强大的表现力,高效地查询和更新图数据。

上一个简单的案例演示一下:以《夏洛特烦恼》这个电影为例

1.创建节点

create(:Person{name:"沈腾",gender:'男',born:1979})

注意:

用 create 即便是重复的数据也会再插入一条,会有两个沈腾,用 merge 创建则不会新增节点
后续操作可能更多使用到 merge

create(:Person{name:"马丽",gender:'女',born:1982}),
(:Person{name:"王智",gender:'女',born:1983}),
(:Person{name:"尹正",gender:'男',born:1986}), 
(:Person{name:"闫飞",gender:'男',born:1983}),
(:Movie{title:'夏洛特烦恼',mins:104,rating:7.9,releasedate:'2015-09-30'})

查询出生在1983年之前的人:

match(p:Person) where p.born<1983 return *

 

2.创建关系

导演关系:

match (p:Person{name:"闫飞"}),(m:Movie{title:"夏洛特烦恼"})   
create (p)-[r:导演]->(m) return *

演员关系: 

match (p1:Person{name:"沈腾"}),(m:Movie{title:"夏洛特烦恼"}),
(p2:Person{name:"马丽"}), (p3:Person{name:"王智"}),(p4:Person{name:"尹正"}) 
create (p1)-[r1:出演{roles:['夏洛']}]->(m),(m)-[r11:演员]->(p1),
(p2)-[r2:出演{roles:['马冬梅']}]->(m),(m)-[r22:演员]->(p2) ,
(p3)-[r3:出演{roles:['秋雅']}]->(m),(m)-[r33:演员]->(p3) ,
(p4)-[r4:出演{roles:['袁华']}]->(m),(m)-[r44:演员]->(p4) return *

朋友关系: 

match (p1:Person{name:"沈腾"}),(p3:Person{name:"马丽"}),(p4:Person{name:"尹正"}) 
create (p1)-[:朋友]->(p2:Person{name:"贾玲"}),(p2)-[:朋友]->(p1),
(p3)-[:朋友]->(p2),(p2)-[:朋友]->(p3),
(p1)-[:朋友]->(p4),(p4)-[:朋友]->(p1),
(p1)-[:出演]->(m:Movie{title:"你好,李焕英"}),(m)-[:演员]->(p1),
(p2)-[:导演]->(m) return *

 查询关系为朋友的人

match(p1)-[r:朋友]->(p2) return *

查询出演电影的数量:

match (p:Person)-[:出演]->(m:Movie)
with p.name as name,count(distinct m) as movie_num
return name,movie_num order by movie_num desc

查询所有关系:

match(p1)-[r]->(p2) return *

 表格可以下载下来,关系图也可以下载

3.删除

①删除关系:

match(n)<-[r]->() where n.name="沈腾" delete r

② 删除节点:

match(n) where n.name="沈腾" delete n

③全部删除:

match(n) detach delete n

简单说明:

①这只是一个简单的关系图,假如上万的数据节点,查询职业是演员的人并计算演员有多少人。  

②(六人定律:你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过六个人你就能够认识任何一个陌生人。)

neo4j可以创建1亿多个节点、关系和属性  这样就可以形成一个巨大的关系网  

 

应用场景:

个性化推荐:根据你喜欢的内容推荐

在个性化推荐系统中,用户、产品和交互等实体可以表示为节点,而用户与产品之间的购买、交互和评论等关系可以表示为关系。通过分析这些关系,可以了解用户的兴趣和偏好,从而提供与用户当前上下文相关的个性化建议

金融行业应用

反欺诈多维关联分析场景:
通过图分析可以清楚地知道洗钱网络及相关嫌疑,例如对用户所使用的帐号、发生交易时的IP地址、MAC地址、手机IMEI号等进行关联分析。

社交网络图谱

在社交网络中,公司、员工、技能的信息,这些都是节点,它们之间的关系和朋友之间的关系都是边,在这里面图数据库可以做一些非常复杂的公司之间关系的查询。比如说公司到员工、员工到其他公司,从中找类似的公司、相似的公司,都可以在这个系统内完成。

企业关系图谱

图数据库可以对各种企业进行信息图谱的建立,包括最基本的工商信息,包括何时注册、谁注册、注册资本、在何处办公、经营范围、高管架构。围绕企业的经营范围,继续细化去查询企业究竟有哪些产品或服务,例如通过企业名称查询到企业的自媒体,从而给予其更多关注和了解。另外也包括对企业的产品和服务的数据关联,查看该企业有没有令人信服的自主知识产权和相关资质来支撑业务的开展。

企业在日常经营中,与客户、合作伙伴、渠道方、投资者都会打交道,这也决定了企业对社会各个领域都广有涉猎,呈现面错综复杂,因此可以通过企业数据图谱来查询,层层挖掘信息。基于图数据的企业信息查询可以真正了解企业的方方面面,而不再是传统单一的工商信息查询。

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/494108.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【看海的算法日记✨优选篇✨】第二回:流动之窗,探索算法的优雅之道

&#x1f308; 个人主页&#xff1a;谁在夜里看海. &#x1f525; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长&#xff0c;行则将至 目录 一、算法思想 双指针 滑动窗口 二、具体运用 1.⻓度最⼩的⼦数组 算法思路 算法流程 代码 2.最⼤…

Tool之Excalidraw:Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略

Tool之Excalidraw&#xff1a;Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略 目录 Excalidraw 简介 1、Excalidraw 的主要特点&#xff1a; Excalidraw 安装和使用方法 1、Excalidraw的安装 T1、使用 npm 安装&#xff1a; T2、使用 …

设计模式之【观察者模式】

观察者模式&#xff1a; 应用于发布-订阅消息模型中&#xff0c;订阅者订阅一个主题后&#xff0c;当有新消息到达时&#xff0c;所有订阅者都会收到通知。 主要关注的是对象之间的通信。是一种对象之间的一对多关系&#xff0c;多个对象依赖于一个对象&#xff0c;当被依赖的…

页面无滚动条,里面div各自有滚动条

一、双滚动条左右布局 实现效果 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Doc…

(Z Shell)zsh: no matches found: ? 使用单引号包裹

文章目录 dgqdgqdeMac-mini ProductAuthentication % git commit -m "open-type"{{isCodeValid ? getPhoneNumber : none}}"" zsh: no matches found: ?git commit -m open-type"{{isCodeValid ? getPhoneNumber : none}}"你遇到的 zsh: no m…

鸿蒙元服务从0到上架【第二篇】

第一招&#xff1a;在AppGallery后台下载对应的证书等文件 AppGallery后台 新增发布证书&#xff0c;具体操作可查看申请发布证书 申请发布Profile证书 第二招&#xff1a;在IDE中填写 第三招&#xff1a;打包【⚠️发布上架的只能是Build App】 终端展示这一片绿&#xf…

网络安全概论——身份认证

一、身份证明 身份证明可分为以下两大类 身份验证——“你是否是你所声称的你&#xff1f;”身份识别——“我是否知道你是谁&#xff1f;” 身份证明系统设计的三要素&#xff1a; 安全设备的系统强度用户的可接受性系统的成本 实现身份证明的基本途径 所知&#xff1a;个…

【学习记录】浏览器指纹相关学习记录(指纹介绍、获取指纹、修改指纹、随机指纹保护隐私等)

用途 不需要用户登录&#xff0c;可以识别是同一个用户&#xff0c;用于反爬虫广告推送等一类的场景 指纹在线查询地址 http://www.fingerprintbrowser.com/ CreepJS 浏览器指纹在线检测网站:代理IP防关联伪装度查询工具 IP检测大师 【自动化】Python SeleniumUtil 工具 开…

redis数据转移

可能有时候因为硬件的原因我们我们需要更换服务器&#xff0c;如果更换服务器的话&#xff0c;那我们redis的数据该怎样转移呢&#xff0c;按照一下步骤即可完成redis数据的转移 1.进入redis客户端 2.使用 bgsave命令进行数据的备份&#xff0c;此命令完成后会在你的redis安装目…

【MySQL】数据库 Navicat 可视化工具与 MySQL 命令行基本操作

&#x1f4af; 欢迎光临清流君的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落 &#x1f4af; &#x1f525; 个人主页:【清流君】&#x1f525; &#x1f4da; 系列专栏: 运动控制 | 决策规划 | 机器人数值优化 &#x1f4da; &#x1f31f;始终保持好奇心&…

腾讯云智能结构化OCR:以多模态大模型技术为核心,推动跨行业高效精准的文档处理与数据提取新时代

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大三学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…

登山第十六梯:深度恢复——解决机器人近视问题

文章目录 一 摘要 二 资源 三 内容 一 摘要 深度感知是基于 3D 视觉的机器人技术的一个重要问题。然而&#xff0c;现实世界的主动立体或 ToF 深度相机经常会产生嘈杂且深度不完整&#xff0c;从而成为机器人性能的瓶颈。在这项工作中&#xff0c;提出了 一个基于学习的立体…

Leetcode中最常用的Java API——util包

前言&#xff1a;在刷力扣的时候是核心代码模式&#xff0c;笔试的时候很可能是ACM模式&#xff0c;需要自己完成导包、定义和自行设计输出&#xff0c;所以一些常用的类和方法需要先导入相应的API包&#xff0c;java.util就是最常用到的包&#xff0c;因为它包含集合这个大框架…

JVM对象分配内存如何保证线程安全?

大家好&#xff0c;我是锋哥。今天分享关于【JVM对象分配内存如何保证线程安全&#xff1f;】面试题。希望对大家有帮助&#xff1b; JVM对象分配内存如何保证线程安全&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在JVM中&#xff0c;对象的内存分配…

前端使用 Konva 实现可视化设计器(20)- 性能优化、UI 美化

这一章主要分享一下使用 Konva 遇到的性能优化问题&#xff0c;并且介绍一下 UI 美化的思路。 至少有 2 位小伙伴积极反馈&#xff0c;发现本示例有明显的性能问题&#xff0c;一是内存溢出问题&#xff0c;二是卡顿的问题&#xff0c;在这里感谢大家的提醒。 请大家动动小手&a…

AIGC-------AI生成内容如何赋能AR和VR体验?

AI生成内容如何赋能AR和VR体验 引言 增强现实&#xff08;AR&#xff09;和虚拟现实&#xff08;VR&#xff09;技术近年来蓬勃发展&#xff0c;为用户提供了沉浸式的体验。这些技术已经广泛应用于游戏、教育、医疗、建筑等领域。然而&#xff0c;AR和VR体验的质量与内容的丰富…

VLM--CLIP作分类任务的损失函数

info_nce_loss 这个是clip作对比学习的损失函数 各个博客上都有详细介绍了&#xff0c;我这里就不赘述 def info_nce_loss(image_features, text_features,logit_scale,labels, temperature0.07):batch_size image_features.shape[0]image_features image_features / image…

【模型压缩】原理及实例

在移动智能终端品类越发多样的时代&#xff0c;为了让模型可以顺利部署在算力和存储空间都受限的移动终端&#xff0c;对模型进行压缩尤为重要。模型压缩&#xff08;model compression&#xff09;可以降低神经网络参数量&#xff0c;减少延迟时间&#xff0c;从而实现提高神经…

leetcode-128.最长连续序列-day14

为什么我感觉上述代码时间复杂度接近O(2n), 虽然有while循环&#xff0c;但是前面有个if判断&#xff0c;能进入while循环的也不多&#xff0c;while循环就相当于两个for循环&#xff0c;但不是嵌套类型的&#xff1a; 变量作用域问题&#xff1a;

Burp与其他安全工具联动及代理设置教程

Burp Suite 是一款功能强大的 Web 安全测试工具&#xff0c;其流量拦截和调试功能可以与其他安全工具&#xff08;如 Xray、Yakit、Goby 等&#xff09;实现联动&#xff0c;从而提升渗透测试的效率。本文将详细讲解 Burp 与其他工具联动的原理以及代理设置的操作方法&#xff…