Graph Database Self-Managed Neo4j 知识图谱存储实践1:安装和基础知识学习

news2025/4/26 0:05:18

Neo4j 是一个原生图数据库,这意味着它在存储层实现了真正的图模型。它不是在其他技术之上使用“图抽象”,而是以您在白板上绘制想法的相同方式在Neo4j中存储数据。

自2007年以来,Neo4j已经发展成为一个丰富的工具、应用程序和库的生态系统。该生态系统允许您以多种方式将图技术与您的工作环境集成,

除了核心图之外,Neo4j还提供ACID事务、集群支持和运行时故障转移。

Neo4j 使用Java和Scala编写。可以在GitHub上查看源代码:https://github.com/neo4j/neo4j

中文教程: https://neo4j.com.cn/ 

下载安装

下载页面:Neo4j Deployment Center - Graph Database & Analytics

可以选择:Graph Database Self-Managed(图形数据库自我管理 )选社区版下载,也可以下载Ubuntu 包文件,或者下载桌面版,比如Windows安装版文件进行安装。

下载Windows安装版安装

在下载页面选中windows桌面版,第一次需要注册信息,点击后会自动下载,并给Neo4j Desktop Activation Key

将key保存好。当然国内的ip可能无法下载。

或者点击Neo4j的:Download your free copy of O’Reilly’s Graph Databases 社区版

显示:

Your download should begin automatically. Click here if it doesn't.

Default login is username 'neo4j' and password 'neo4j' (full installation instructions below)

想办法下载neo4j-community-2025.03.0-windows后,解压后是一个目录,到目录的bin子目录,然后执行

E:\360Downloads\neo4j-community-2025.03.0-windows\bin>neo4j.bat console

在FreeBSD下安装neo4j

启动FreeBSD VirtualBox虚拟机 192.168.0.109

ssh 登录普通账户,然后su - 到root账户(FreeBSD里面sudo不是默认安装,所以个人近几年才流行使用sudo来进行管理)

安装neo4j软件,先搜索一下:

pkg search neo4j
neo4j-4.4.35                   High performance graph store and database

发现确实有4.4.35的包,于是sudo pkg install来安装neo4j:

sudo pkg install neo4j

对于FreeBSD系统来说,因为有pkg包,所以安装特别简单。但是遗憾的是版本有点低。

FreeBSD下还支持ports编译安装,可定制,性能和安全性有保障,当然版本也是4.4.35 。

启动服务

注意,这里需要使用管理员账户启动服务:

# 启动服务(命令行)
neo4j console

启动后,会显示网页链接地址:

2025-04-22 14:03:23.617+0000 INFO  Remote interface available at http://localhost:7474/
为了非本地主机也能控制,可以修改配置文件,比如FreeBSD的配置文件在:/usr/local/etc/neo4j.conf:

找到这句:#dbms.default_listen_address=0.0.0.0

把注释去掉即可。

这样启动后就可以远程访问了,比如:

http://192.168.0.109:7474/browser/

连上网页控制台

启动后,访问

http://192.168.0.109:7474/browser/

连上控制页面:

默认用户和密码是neo4j,连上后会提示设置新密码,设好新密码后,就进入了管理页面。

在这个页面,可以neoj4$提示符后,输入运行的语句:

// 创建电影图谱
CREATE (m:Movie {title:"黑客帝国", year:1999})
CREATE (a:Person {name:"基努·里维斯"})
CREATE (a)-[:ACTED_IN {role:"Neo"}]->(m)

然后输入如下三句进行查询: 

// 查询出演过某电影的演员
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
WHERE m.title = "黑客帝国"
RETURN p.name, r.role

 查询结果:

p.namer.role

1

"基努·里维斯""Neo"

Windows下将 Neo4j 安装为 Windows 服务

  • 在命令行中运行以下命令将 Neo4j 安装为 Windows 服务:
    neo4j.bat install-service 
  • 安装成功后,可以使用以下命令启动、停止、重启和查询 Neo4j 服务的状态:
    neo4j.bat start neo4j.bat stop neo4j.bat restart neo4j.bat status 
  • 这样设置后,Neo4j 会在 Windows 启动时自动运行。

 配置

Neo4j 的配置文件位于 conf 文件夹中的 neo4j.conf 文件。Windows就是解压缩目录所在的conf目录,FreeBSD就是/usr/local/etc 目录。

去掉neo4j.conf文件这句的注释就能绑定到0.0.0.0监听:

dbms.default_listen_address=0.0.0.0

修改监听端口号

修改server.http.listen_address的值来修改端口号

#server.http.listen_address=:7474

 技术学习:

Neo4j 图数据库将数据存储为节点关系属性,而不是存储在表或文档中。这意味着您可以像在白板上绘制想法一样组织数据。

Neo4j 目前被各种行业的初创公司教育机构大型企业广泛使用,包括金融服务、政府、能源、技术、零售和制造业。图在帮助他们开发创新新技术、业务管理、洞察力和收入再生以及整体效率提升方面取得了成功。

什么是什么是 Cypher

Cypher 是 Neo4j 的声明式和 GQL 兼容的查询语言。Cypher 通过 openCypher 项目以开源形式提供,类似于 SQL,但针对图进行了优化。

Cypher 直观且接近自然语言,通过基于 ASCII 艺术类型语法的自身设计,提供了一种可视化匹配模式和关系的方式:

(:nodes)-[:ARE_CONNECTED_TO]->(:otherNodes)

圆括号用于表示 (:Nodes),而 -[:ARROWS]-> 用于表示 (:Nodes) 之间的关系。使用此查询语法,您可以对图执行创建、读取、更新或删除 (CRUD) 操作。

模式

Neo4j 的属性图由节点和关系组成,它们都可以具有属性。节点表示实体,例如概念、事件、地点和事物。关系连接成对的节点。

但是,节点和关系可以被认为是低级构建块。属性图的真正优势在于它能够编码连接的节点和关系的模式。单个节点或关系通常编码的信息很少,但是节点和关系的模式可以编码任意复杂的想法。

Cypher®(Neo4j 的查询语言)强烈基于模式。具体来说,模式用于匹配所需的图结构。一旦找到或创建了匹配的结构,Neo4j 就可以使用它进行进一步处理。

一个简单的模式(只有一个关系)连接一对节点(或者,偶尔,一个节点连接到自身)。例如,一个人 LIVES_IN 一个城市,或者一个城市是 PART_OF 一个国家。

使用多个关系的复杂模式可以表达任意复杂的概念,并支持各种有趣的用例。例如,我们可能想要匹配一个人 LIVES_IN 一个国家的实例。以下 Cypher 代码将两个简单的模式组合成一个稍微复杂的模式,该模式执行此匹配:

(:Person) -[:LIVES_IN]-> (:City) -[:PART_OF]-> (:Country)

节点语法

Cypher 使用一对括号来表示一个节点:()。这让人联想到一个圆形或一个带有圆形端盖的矩形。

关系语法

Cypher 使用一对破折号 (--) 来表示无向关系。有向关系在一端有一个箭头 (<---->)。带括号的表达式 ([...]) 可用于添加详细信息。

模式语法

结合节点和关系的语法,我们可以表达模式。以下可能是此域中的一个简单模式(或事实):

(keanu:Person:Actor {name: 'Keanu Reeves'})-[role:ACTED_IN {roles: ['Neo']}]->(matrix:Movie {title: 'The Matrix'})

与节点标签等效,:ACTED_IN 模式声明关系的类型。变量(例如,role)可以在语句中的其他地方使用以引用该关系。

模式变量

为了提高模块化并减少重复,Cypher 允许将模式分配给变量。这允许检查匹配的路径,在其他表达式中使用等。

acted_in = (:Person)-[:ACTED_IN]->(:Movie)

acted_in 变量将包含每个找到或创建的路径的两个节点和连接关系。有许多函数可以访问路径的详细信息,例如:nodes(path)relationships(path)length(path)

子句

Cypher 语句通常具有多个子句,每个子句执行一个特定任务,例如:

  • 在图中创建和匹配模式
  • 过滤、投影、排序或分页结果
  • 组成部分语句

通过组合 Cypher 子句,您可以组成复杂的语句,表达您想要知道或创建的内容。

关于桌面版的官方的文档

Launch

Step 1: Activation

Copy and Paste the activation at the top of this page in the "Activation Key" box in the Neo4j Desktop app.
Alternatively, you can also generate a key from within the app by filling out the form on the right side of the app screen.

Step 2: Create a database

After activation, click on the "New Graph" button. Select "Create a local graph" from the options presented.
Next, enter the "Database name" and "Password" in field and click on the "Create" button.

Step 3: Start the database

After the database is created, click on the "Start" button.

Open the Neo4j Browser

Step 1: Start Neo4j Browser

After the database starts, click on the "Manage" button.
On the next screen, locate "Open Browser" on top of the screen and click on it. This will open Neo4j Browser in a new window.

Learn more about how to use Neo4j Browser here.

Step 2: Explore sample dataset

Neo4j Desktop comes with two sample datasets. You can run them using the following commands

:play movie graph and :play northwind graph

Learn more about how to use Neo4j Browser here.

调试

下载报错:The Amazon CloudFront distribution is configured to block access from your country

被禁了?

好消息是FreeBSD里有。

在FreeBSD下安装neo4j

pkg search neo4j
neo4j-4.4.35                   High performance graph store and database

安装

sudo pkg install neo4j

安装完毕显示:

Message from openjdk11-11.0.26+4.1_1:

--
This OpenJDK implementation may require fdescfs(5) mounted on /dev/fd
and procfs(5) mounted on /proc for some applications.

If you have not done it yet, please do the following:

        mount -t fdescfs fdesc /dev/fd
        mount -t procfs proc /proc

To make it permanent, you need the following lines in /etc/fstab:

        fdesc   /dev/fd         fdescfs         rw      0       0
        proc    /proc           procfs          rw      0       0
=====
Message from neo4j-4.4.35:

--
===>   NOTICE:

The neo4j port currently does not have a maintainer. As a result, it is
more likely to have unresolved issues, not be up-to-date, or even be removed in
the future. To volunteer to maintain this port, please create an issue at:

https://bugs.freebsd.org/bugzilla

More information about port maintainership is available at:

https://docs.freebsd.org/en/articles/contributing/#ports-contributing

neo4j启动报错:Failed to write PID file: Access denied at /var/run/neo4j.pid

使用管理员账户启动

neo4j console

启动后显示:

Directories in use:
home:         /usr/local/neo4j
config:       /usr/local/etc
logs:         /var/log/neo4j
plugins:      /usr/local/neo4j/plugins
import:       /usr/local/neo4j/import
data:         /var/db/neo4j
certificates: /usr/local/neo4j/certificates
licenses:     /usr/local/neo4j/licenses
run:          /var/run
Starting Neo4j.
......
2025-04-22 14:03:23.617+0000 INFO  Remote interface available at http://localhost:7474/
2025-04-22 14:03:23.635+0000 INFO  id: E631C7E152FA51F51F15CBC9797D6C2D30A5D3C627B6433DF27CF7911201DA13
2025-04-22 14:03:23.635+0000 INFO  name: system

node4j启动后只能本地打开

打开配置文件/usr/local/etc/neo4j.conf:

找到这句:#dbms.default_listen_address=0.0.0.0

把注释去掉即可。

这样启动后就可以远程访问了,比如:

http://192.168.0.109:7474/browser/

下载了neo4j-community-2025.03.0-windows ,解压后是一个目录,应该怎么启动?

到目录的bin子目录,然后执行

E:\360Downloads\neo4j-community-2025.03.0-windows\bin>neo4j.bat console

windows下执行neo4j.bat console报错

neo4j.bat console
:  org.neo4j.server.startup.Neo4jCommand ʱ LinkageError
        java.lang.UnsupportedClassVersionError: org/neo4j/server/startup/Neo4jCommand has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 55.0

需要升级java,算了,就先用FreeBSD版本实践了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一天学完Servlet!!!(万字总结)

文章目录 前言Servlet打印Hello ServletServlet生命周期 HttpServletRequest对象常用api方法请求乱码问题请求转发request域对象 HttpServletResponse对象响应数据响应乱码问题请求重定向请求转发与重定向区别 Cookie对象Cookie的创建与获取Cookie设置到期时间Cookie注意点Cook…

E3650工具链生态再增强,IAR全面支持芯驰科技新一代旗舰智控MCU

近日&#xff0c;全球嵌入式软件开发解决方案领导者IAR与全场景智能车芯引领者芯驰科技正式宣布&#xff0c;IAR Embedded Workbench for Arm已全面支持芯驰E3650&#xff0c;为这一旗舰智控MCU提供开发和调试一站式服务&#xff0c;进一步丰富芯驰E3系列智控芯片工具链生态&am…

MSSQL-数据库还原报错-‘32(另一个程序正在使用此文件,进程无法访问。)‘

这里是引用 标题: Microsoft SQL Server Management Studio 还原 对于 服务器“<<服务器名称>>”失败。 (Microsoft.SqlServer.SmoExtended) 有关帮助信息&#xff0c;请单击: http://go.microsoft.com/fwlink?ProdNameMicrosoftSQLServer&ProdVer12.0.2000.8…

卷积神经网络:视觉炼金术士的数学魔法

引言&#xff1a;当数学遇见视觉炼金术 在人工智能的奇幻世界里&#xff0c;卷积神经网络&#xff08;CNN&#xff09;犹如掌握视觉奥秘的炼金术士&#xff0c;将原始像素的"铅块"淬炼成认知的"黄金"。这种融合数学严谨性与生物灵感的算法架构&#xff0c…

立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务

作者&#xff1a;厦门立马耀网络科技有限公司大数据开发工程师 陈宏毅 背景介绍 行业 蝉选是蝉妈妈出品的达人选品服务平台。蝉选秉持“陪伴达人赚到钱”的品牌使命&#xff0c;致力于洞悉达人变现需求和痛点&#xff0c;提供达人选高佣、稳变现、速响应的选品服务。 业务特…

专业热度低,25西电光电工程学院(考研录取情况)

1、光电工程学院各个方向 2、光电工程学院近三年复试分数线对比 学长、学姐分析 由表可看出&#xff1a; 1、光学工程25年相较于24年下降20分&#xff0c; 2、光电信息与工程&#xff08;专硕&#xff09;25年相较于24年上升15分 3、25vs24推免/统招人数对比 学长、学姐分析…

java—11 Redis

目录 一、Redis概述 二、Redis类型及编码 三、Redis对象的编码 1. 类型&编码的对应关系 2. string类型常用命令 &#xff08;1&#xff09;string类型内部实现——int编码 &#xff08;2&#xff09;string类型内部实现——embstr编码 ​编辑 &#xff08;3&#x…

热门算法面试题第19天|Leetcode39. 组合总和40.组合总和II131.分割回文串

39. 组合总和 力扣题目链接(opens new window) 给定一个无重复元素的数组 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明&#xff1a; 所有数字&#xff08;包括 ta…

2194出差-节点开销Bellman-ford/图论

题目网址&#xff1a; 蓝桥账户中心 我先用Floyd跑了一遍&#xff0c;不出所料TLE了 n,mmap(int,input().split())clist(map(int,input().split()))INFfloat(inf) ma[[INF]*n for i in range(n)]for i in range(m):u,v,wmap(int,input().split())ma[u-1][v-1]wma[v-1][u-1]w#“…

Docker安装beef-xss

新版的kali系统中安装了beef-xss会因为环境问题而无法启动&#xff0c;可以使用Docker来安装beef-xss&#xff0c;节省很多时间。 安装步骤 1.启动kali虚拟机&#xff0c;打开终端&#xff0c;切换到root用户&#xff0c;然后执行下面的命令下载beef的docker镜像 wget https:…

时间序列-数据窗口进行多步预测

在时间序列预测领域&#xff0c;多步预测旨在基于历史数据预测未来多个时间点的值&#xff0c;而创建数据窗口是实现这一目标的常用且高效的技术手段。数据窗口技术的核心是通过滑动窗口机制构建训练数据集&#xff0c;其核心逻辑可概括为&#xff1a;利用历史时间步的序列模式…

(三)mac中Grafana监控Linux上的Redis(Redis_exporter安装使用)

框架&#xff1a;GrafanaPrometheusRedis_exporter Grafana安装-CSDN博客 普罗米修斯Prometheus监控安装&#xff08;mac&#xff09;-CSDN博客 1.Redis_exporter安装 直接下载 wget https://github.com/oliver006/redis_exporter/releases/download/v1.0.3/redis_expor…

Linux Sed 深度解析:从日志清洗到 K8s 等12个高频场景

看图猜诗&#xff0c;你有任何想法都可以在评论区留言哦~ 摘要&#xff1a;Sed&#xff08;Stream Editor&#xff09;作为 Linux 三剑客之一&#xff0c;凭借其流式处理与正则表达式能力&#xff0c;成为运维场景中文本批处理的核心工具。本文聚焦生产环境高频需求&#xff…

基于java的网络编程入门

1. 什么是IP地址 由此可见&#xff0c;32位最大为255.255.255.255 打开cmd查询自己电脑的ip地址&#xff1a;ipconfig 测试网络是否通畅&#xff1a;ping 目标ip地址 2. IP地址的组成 注意&#xff1a;127.0.0.1是回送地址&#xff0c;指本地机&#xff0c;一般用来测试使用 …

Git简介与入门

Git的发明 Git由著名的Linux创始人linus于2005年发明&#xff08;所以git的界面、使用方式与Linux挺像的&#xff0c;即命令行方式&#xff09; 经过发展&#xff0c;现在广泛应用于代码管理与团队协作。 Git特性 Git是分布式版本控制系统 分布式 每个开发者拥有完整仓库&…

Linux 网络基础三 (数据链路层协议:以太网协议、ARP 协议)

一、以太网 两个不同局域网的主机传递数据并不是直接传递的&#xff0c;而是通过路由器 “一跳一跳” 的传递过去。 跨网络传输的本质&#xff1a;由无数个局域网&#xff08;子网&#xff09;转发的结果。 所以&#xff0c;要理解数据跨网络转发原理就要先理解一个局域网中数…

16.QT-Qt窗口-菜单栏|创建菜单栏|添加菜单|创建菜单项|添加分割线|添加快捷键|子菜单|图标|内存泄漏(C++)

Qt窗⼝是通过QMainWindow类来实现的。 QMainWindow是⼀个为⽤⼾提供主窗⼝程序的类&#xff0c;继承⾃QWidget类&#xff0c;并且提供了⼀个预定义的布局。QMainWindow包含⼀个菜单栏&#xff08;menu bar&#xff09;、多个⼯具栏(tool bars)、多个浮动窗⼝&#xff08;铆接部…

[特殊字符] 分布式定时任务调度实战:XXL-JOB工作原理与路由策略详解

在微服务架构中&#xff0c;定时任务往往面临多实例重复执行、任务冲突等挑战。为了解决这一问题&#xff0c;企业级调度框架 XXL-JOB 提供了强大的任务统一调度与执行机制&#xff0c;特别适合在分布式系统中使用。 本文将从 XXL-JOB 的核心架构入手&#xff0c;详细讲解其调…

java面试题及答案2020,java最新面试题(四十四)

java面试题及答案2020 二面-2020/3/18 1、自我介绍项目比赛 2、java集合框架全部介绍。。从list set queue到map 3、hashmap底层扩容线程安全问题 4、如果-一个对象要作为hashmap的key需要做什么 5、Threadlocal类以及 内存泄漏 6、线程同步方式,具体每一个怎么做的 7、jvm类加…

oracle 锁的添加方式和死锁的解决

DML锁添加方式 DML 锁可由一个用户进程以显式的方式加锁&#xff0c;也可通过某些 SQL 语句隐含方式实现。 DML 锁有三种加锁方式&#xff1a;共享锁方式、独占锁方式、共享更新。 共享锁&#xff0c;独占锁用于 TM 锁&#xff0c;共享锁用于 TX 锁。 1)共享方式的表级锁 共享方…