跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava算法

Neo4j 图数据库使用入门

Neo4j 图数据库的安装方法(Windows 及 Docker)、基础 CQL 语句(创建、查询、关系、删除、更新等)、常用函数、数据备份与恢复、复杂查询(路径、最短路径等)以及在 Spring Boot 中的集成使用。内容涵盖环境准备、配置说明及核心操作示例,适合初学者入门。

Elasticer发布于 2026/4/5更新于 2026/5/2129 浏览
Neo4j 图数据库使用入门

一、Neo4j 安装

1、Windows 安装

(1)准备环境

建议 JDK 17 环境。

(2)下载

下载地址:https://neo4j.com/deployment-center/ 社区版是免费的,可以选择 Windows、Linux、Mac 等操作系统。

在这里插入图片描述

(3)解压

在这里插入图片描述

(4)运行

直接执行 neo4j.bat,会有命令提示。

# 运行 .\neo4j.bat console

在这里插入图片描述

访问 http://localhost:7474/ 第一次进入页面,需要输入用户名密码 neo4j/neo4j,并且需要设置新密码:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(5)基本使用

在这里插入图片描述

2、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

二、CQL 语句

1、CQL 简介

在这里插入图片描述

2、CREATE 命令,创建节点、关系、属性

-- node-name 节点名
-- label-name 标签名
-- 1、Neo4j 数据库服务器使用此<node-name>将此节点详细信息存储在 Database.As 中作为 Neo4j DBA 或 Developer,我们不能使用它来访问节点详细信息。
-- 2、Neo4j 数据库服务器创建一个<label-name>作为内部节点名称的别名。作为 Neo4j DBA 或 Developer,我们应该使用此标签名称来访问节点详细信息。
CREATE(<node-name>:<label-name>)
-- 创建带有属性的节点
CREATE(<node-name>:<label-name> { <key>:<Value>........<n-key>:<n-Value> })
-- 创建 Student 和 Teacher 的图
CREATE(stu:Student)
CREATE(tea:Teacher)
-- 创建带有属性的节点
CREATE(zhangsan:Student { id:1, name:"zhangsan", age:13 })

3、MATCH 命令,查询

MATCH(<node-name>:<label-name>)
-- match 需要配合 return 使用
MATCH(stu:Student) RETURN stu

不配合 update 或者 return 语句会报错。

在这里插入图片描述

4、RETURN 语句

RETURN<node-name>.<property1-name>,........<node-name>.<propertyn-name>
-- 示例
MATCH(s:Student) RETURN s
-- 或者直接返回属性
MATCH(s:Student) RETURN s.id, s.name, s.age

在这里插入图片描述

5、WHERE 子句

在这里插入图片描述

WHERE<property-name><comparison-operator><value>

在这里插入图片描述

在这里插入图片描述

-- 条件查询
MATCH(emp:Employee) WHERE emp.name ='Abc' OR emp.name ='Xyz' RETURN emp
-- 查询多个,但是没有条件,可以查询后做关系
MATCH(d:Dog),(c:Cat) WHERE d.name ='dog1' or c.name ='cat1' RETURN d,c

6、创建关系

# 创建 node1 到 node2 的单向关系 使用新节点创建关系
CREATE(node1-name:lable1-name)-[relationship-name:relationship-lable-name]->(node2-name:lable2-name)
# 创建双向关系 使用新节点创建关系
CREATE(node1-name:lable1-name)<-[relationship-name:relationship-lable-name]->(node2-name:lable2-name)
# 使用已知节点创建带属性的关系
MATCH(<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>)
CREATE(<node1-label-name>)-[<relationship-label-name>:<relationship-name> { <define-properties-list>}]->(<node2-label-name>)
RETURN<relationship-label-name>
# 检索关系节点的详细信息
MATCH(<node1-label-name>)-[<relationship-label-name>:<relationship-name>]->(<node2-label-name>)
RETURN<relationship-label-name>

在这里插入图片描述

-- 创建数据
CREATE(d:Dog{ id:1,name:"dog1",age:1 })
CREATE(c:Cat{ id:2,name:"cat1",age:2 })
-- 使用新节点创建关系
CREATE(d:Dog)-[r:Like]->(c:Cat)
-- 已知节点 创建带属性的关系 使用 where
MATCH(d:Dog),(c:Cat) WHERE d.name ='dog1' and c.name ='cat1'
CREATE(d)-[r:love {info:"loveit"}]->(c)
RETURN r
-- 检索关系详情
MATCH(d)-[r:love]->(c) RETURN d,r,c

在这里插入图片描述

7、DELETE 删除节点和关系

-- 删除节点
DELETE<node-name-list>
-- 删除关系
DELETE<node1-name>,<node2-name>,<relationship-name>
-- 删除节点,如果有关系需要先删除
MATCH(stu: Student) DELETE stu
-- 删除关系
MATCH(d)-[r:love]->(c) DELETE r

8、REMOVE 删除标签和属性

-- 删除属性 REMOVE <node-name>.<property1-name>,<node-name>.<property2-name>
-- 创建多个标签多个属性
CREATE(m:Movie:Pic {id:'1', name:"test"})
-- 删除标签
-- 删除属性 并返回
MATCH(m:Movie:Pic) REMOVE m.name RETURN m
-- 删除标签
MATCH(m:Movie) REMOVE m:Pic

9、SET 添加、更新属性

-- 节点、关系添加属性
SET<node-label-name>.<property1-name>,...<node-laben-name>.<propertyn-name>
-- 添加属性
MATCH(book:Book) SET book.title ='superstar' RETURN book

10、ORDER BY 排序

-- 默认升序
ORDERBY<property-name-list>[DESC]
-- 示例
MATCH(emp:Employee) RETURN emp.empid,emp.name,emp.salary,emp.deptno ORDERBY emp.name

在这里插入图片描述

11、UNION 合并

UNION 子句,它将两组结果中的公共行组合并返回到一组结果中。它 不从两个节点返回重复的行。 限制:结果列类型和来自两组结果的名称必须匹配,这意味着列名称应该相同,列的数据类型应该相同。

-- union 合并
<MATCH Command1> UNION <MATCH Command2>
-- 示例
MATCH(cc:CreditCard) RETURN cc.id as id,cc.number as number,cc.name as name, cc.valid_from as valid_from,cc.valid_to as valid_to UNION
MATCH(dc:DebitCard) RETURN dc.id as id,dc.number as number,dc.name as name, dc.valid_from as valid_from,dc.valid_to as valid_to

UNION ALL 子句,它结合并返回两个结果集的所有行成一个单一的结果集。它还 返回由两个节点重复行。 限制:结果列类型,并从两个结果集的名字必须匹配,这意味着列名称应该是相同的,列的数据类型应该是相同的。

-- UNION ALL
<MATCH Command1> UNIONALL <MATCH Command2>

12、LIMIT 和 SKIP 子句

Neo4j CQL 已提供 LIMIT 子句和 SKIP 来过滤或限制查询返回的行数。 简单来说:LIMIT 返回前几行,SKIP 跳过几行。

-- 返回前两行
MATCH(emp:Employee) RETURN emp LIMIT 2
-- 跳过两行
MATCH(emp:Employee) RETURN emp SKIP 2
-- 实现分页,跳过 1 行然后返回 2 行
MATCH(emp:Employee) RETURN emp SKIP 1 LIMIT 2

13、MERGE 合并

MERGE 命令是 CREATE 命令和 MATCH 命令的组合。 Neo4j CQL MERGE 命令在图中搜索给定模式,如果存在,则返回结果。 如果它不存在于图中,则它创建新的节点/关系并返回结果。

MERGE=CREATE+MATCH
-- 语法
MERGE(<node-name>:<label-name> { <Property1-name>:<Property1-Value>.....<Propertyn-name>:<Propertyn-Value> })

注意:Neo4j CQL MERGE 命令语法与 CQL CREATE 命令类似。 我们将使用这两个命令执行以下操作 – 创建具有一个属性的配置文件节点:Id,名称;创建具有相同属性的同一个 Profile 节点:Id,Name;检索所有 Profile 节点详细信息并观察结果。 我们将使用 CREATE 命令执行这些操作:

在这里插入图片描述

14、NULL 值

Neo4j CQL 将空值视为对节点或关系的属性的缺失值或未定义值。 当我们创建一个具有现有节点标签名称但未指定其属性值的节点时,它将创建一个具有 NULL 属性值的新节点。

-- 过滤 null
MATCH(e:Employee) WHERE e.id IS NOT NULL RETURN e.id,e.name,e.sal,e.deptno
MATCH(e:Employee) WHERE e.id IS NULL RETURN e.id,e.name,e.sal,e.deptno

15、IN 操作符

IN[<Collection-of-values>]
-- 示例
MATCH(e:Employee) WHERE e.id IN [123,124] RETURN e.id,e.name,e.sal,e.deptno

16、INDEX 索引

-- 创建索引语法
CREATE INDEX ON :<label_name>(<property_name>)
-- 删除索引
DROP INDEX ON :<label_name>(<property_name>)
-- 创建索引
CREATE INDEX ON :Customer (name)
-- 删除
DROP INDEX ON :Customer (name)

17、UNIQUE 唯一约束

-- 语法
CREATE CONSTRAINT ON (<label_name>) ASSERT <property_name> IS UNIQUE
DROP CONSTRAINT ON (<label_name>) ASSERT <property_name> IS UNIQUE
-- 示例
CREATE CONSTRAINT ON (cc:CreditCard) ASSERT cc.number IS UNIQUE
DROP CONSTRAINT ON (cc:CreditCard) ASSERT cc.number IS UNIQUE

18、DISTINCT 去重

这个函数的用法就像 SQL 中的 distinct 关键字,返回的是所有不同值。

-- 语法
MATCH(n:Movie) RETURN Distinct(n.name)
-- 示例
MATCH(n) RETURN distinct(n.name) LIMIT 25

三、函数

1、字符串函数

-- 字符串转大写
MATCH(e:Employee) RETURN e.id, UPPER(e.name),e.sal,e.deptno
-- 字符串转小写
MATCH(e:Employee) RETURN e.id, LOWER(e.name),e.sal,e.deptno
-- 分隔字符串 如果一个字符串包含 n 个字母,则它的长度为 n,索引从 0 开始,到 n-1 结束。
MATCH(e:Employee) RETURN e.id, SUBSTRING(e.name,0,2),e.sal,e.deptno
-- 替换字符
MATCH(e:Employee) RETURN e.id, REPLACE(e.name,'a','z'),e.sal,e.deptno

2、AGGREGATION 聚合

类似于 SQL 中的 GROUP BY 子句。

在这里插入图片描述

在这里插入图片描述

3、关系函数

在获取开始节点,结束节点等细节时知道关系的细节。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四、数据备份与恢复

1、备份

# 备份前需要关闭数据库
./neo4j stop
# 导出到文件
./neo4j-admin dump --database=graph.db --to=/home/2024.dump
# 启动数据库
./neo4j start

2、数据恢复

# 备份前需要关闭数据库
./neo4j stop
# 从文件导入
./neo4j-admin load --from=/home/2024-10-02.dump --database=graph.db --force
# 启动数据库
./neo4j start

五、复杂查询

1、查询指定深度的间接关系

假设你有一个图数据库,其中包含 Person 节点和 KNOWS 关系,你想找到一个 Person 节点通过最多 3 层的间接关系所连接的其他 Person 节点,可以使用以下 Cypher 查询:

MATCH(p1:Person {name: 'Alice'})-[*..3]-(p2:Person) WHERE p1 <> p2 RETURN p1, p2

在这里插入图片描述

2、查询最短路径的间接关系

如果你想找到两个节点之间的最短路径,可以使用 shortestPath 函数:

MATCH(p1:Person {name: 'Alice'}),(p2:Person {name: 'Bob'})
MATCH path = shortestPath((p1)-[*]-(p2)) RETURN path

在这里插入图片描述

3、查询特定关系类型的间接关系

假设你的图中包含多种关系类型,你只想查找通过 FRIEND_OF 关系的间接关系,可以使用以下查询:

MATCH(p1:Person {name: 'Alice'})-[r:FRIEND_OF*..3]-(p2:Person) WHERE p1 <> p2 RETURN p1, p2, r

在这里插入图片描述

4、限制关系路径中的节点类型

如果你想在查找间接关系时,确保路径中的节点属于特定类型,可以使用以下查询:

MATCH(p1:Person {name: 'Alice'})-[*..3]-(p2:Person) WHERE p1 <> p2 AND ALL(n IN nodes(path) WHERE n:Person) RETURN p1, p2

在这里插入图片描述

5、使用变量长度路径和过滤条件

你可以结合变量长度路径和过滤条件来查找更复杂的间接关系。例如,你想找到 Person 节点之间的间接关系,并且路径中某个节点具有特定属性:

MATCH(p1:Person {name: 'Alice'})-[*..3]-(p2:Person) WHERE p1 <> p2 AND ANY(n IN nodes(path) WHERE n.age > 30) RETURN p1, p2

在这里插入图片描述

六、Spring Boot 使用 Neo4j

1、添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>

2、配置文件

# neo4j 配置
spring.neo4j.uri=bolt://localhost:7687
spring.neo4j.authentication.username=neo4j
spring.neo4j.authentication.password=cxf123!!

附录:neo4j.conf 汉化版

For more details and a complete list of settings, please see https://neo4j.com/docs/operations-manual/current/reference/configuration-settings/
# 如果想自定义 neo4j 数据库数据的存储路径,要同时修改 dbms.active_database 和 dbms.directories.data 两项配置,
# 修改配置后,数据会存放在${dbms.directories.data}/databases/${dbms.active_database} 目录下
# 安装的数据库的名称,默认使用${NEO4J_HOME}/data/databases/graph.db 目录
# The name of the database to mount
#dbms.active_database=graph.db
#安装 Neo4j 数据库的各个配置路径,默认使用$NEO4J_HOME 下的路径
#Paths of directories in the installation.
# 数据路径
#dbms.directories.data=data
# 插件路径
#dbms.directories.plugins=plugins
#dbms.directories.certificates=certificates 证书路径
#dbms.directories.logs=logs 日志路径
#dbms.directories.lib=lib jar 包路径
#dbms.directories.run=run 运行路径
#默认情况下想 load csv 文件,只能把 csv 文件放到${NEO4J_HOME}/import 目录下,把下面的
#删除后,可以在 load csv 时使用绝对路径,这样可能不安全
#This setting constrains all `LOAD CSV` import files to be under the `import` directory. Remove or comment it out to allow files to be loaded from anywhere in the filesystem; this introduces possible security problems. See the `LOAD CSV` section of the manual for details.
#此设置将所有'LOAD CSV'导入文件限制在`import`目录下。删除注释允许从文件系统的任何地方加载文件;这引入了可能的安全问题。
dbms.directories.import=import
#把下面这行的#删掉后,连接 neo4j 数据库时就不用输密码了
#Whether requests to Neo4j are authenticated. 是否对 Neo4j 的请求进行了身份验证。
#To disable authentication, uncomment this line 要禁用身份验证,请取消注释此行。
#dbms.security.auth_enabled=false
#Enable this to be able to upgrade a store from an older version. 是否兼容以前版本的数据
dbms.allow_format_migration=true
#Java Heap Size: by default the Java heap size is dynamically calculated based on available system resources. Java 堆大小:默认情况下,Java 堆大小是动态地根据可用的系统资源计算。
#Uncomment these lines to set specific initial and maximum heap size. 取消注释这些行以设置特定的初始值和最大值
#dbms.memory.heap.initial_size=512m
#dbms.memory.heap.max_size=512m
#The amount of memory to use for mapping the store files, in bytes (or kilobytes with the 'k' suffix, megabytes with 'm' and gigabytes with 'g'). 用于映射存储文件的内存量(以字节为单位)千字节带有'k'后缀,兆字节带有'm',千兆字节带有'g')。
#If Neo4j is running on a dedicated server, then it is generally recommended to leave about 2-4 gigabytes for the operating system, give the JVM enough heap to hold all your transaction state and query context, and then leave the rest for the page cache. 如果 Neo4j 在专用服务器上运行,那么通常建议为操作系统保留大约 2-4 千兆字节,为 JVM 提供足够的堆来保存所有的事务状态和查询上下文,然后保留其余的页面缓存。
#The default page cache memory assumes the machine is dedicated to running Neo4j, and is heuristically set to 50% of RAM minus the max Java heap size. 默认页面缓存存储器假定机器专用于运行 Neo4j,并且试探性地设置为 RAM 的 50%减去最大 Java 堆大小。
#dbms.memory.pagecache.size=10g
### Network connector configuration
#With default configuration Neo4j only accepts local connections. Neo4j 默认只接受本地连接 (localhost)
#To accept non-local connections, uncomment this line: 要接受非本地连接,请取消注释此行
dbms.connectors.default_listen_address=0.0.0.0 (这是删除#后的配置,可以通过 ip 访问)
#You can also choose a specific network interface, and configure a non-default port for each connector, by setting their individual listen_address. 还可以选择特定的网络接口,并配置非默认值端口,设置它们各自的 listen_address
#The address at which this server can be reached by its clients. This may be the server's IP address or DNS name, or it may be the address of a reverse proxy which sits in front of the server. This setting may be overridden for individual connectors below. 客户端可以访问此服务器的地址。这可以是服务器的 IP 地址或 DNS 名称,或者可以是位于服务器前面的反向代理的地址。此设置可能会覆盖以下各个连接器。
#dbms.connectors.default_advertised_address=localhost
#You can also choose a specific advertised hostname or IP address, and configure an advertised port for each connector, by setting their individual advertised_address. 您还可以选择特定广播主机名或 IP 地址,为每个连接器配置通告的端口,通过设置它们独特的 advertised_address。
#Bolt connector 使用 Bolt 协议
dbms.connector.bolt.enabled=true
dbms.connector.bolt.tls_level=OPTIONAL
dbms.connector.bolt.listen_address=:7687
#HTTP Connector. There must be exactly one HTTP connector. 使用 http 协议
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=:7474
#HTTPS Connector. There can be zero or one HTTPS connectors. 使用 https 协议
dbms.connector.https.enabled=true
dbms.connector.https.listen_address=:7473
#Number of Neo4j worker threads. Neo4j 线程数
#dbms.threads.worker_count=
#Logging configuration 日志配置
#To enable HTTP logging, uncomment this line 要启用 HTTP 日志记录,请取消注释此行
dbms.logs.http.enabled=true
#Number of HTTP logs to keep. 要保留的 HTTP 日志数
#dbms.logs.http.rotation.keep_number=5
#Size of each HTTP log that is kept. 每个 HTTP 日志文件的大小
dbms.logs.http.rotation.size=20m
#To enable GC Logging, uncomment this line 要启用 GC 日志记录,请取消注释此行
#dbms.logs.gc.enabled=true
#GC Logging Options see http://docs.oracle.com/cd/E19957-01/819-0084-10/pt_tuningjava.html#wp57013 for more information. GC 日志记录选项 有关详细信息,请参见 http://docs.oracle.com/cd/E19957-01/819-0084-10/pt_tuningjava.html#wp57013
#dbms.logs.gc.options=-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintPromotionFailure -XX:+PrintTenuringDistribution
#Number of GC logs to keep. 要保留的 GC 日志数
#dbms.logs.gc.rotation.keep_number=5
#Size of each GC log that is kept. 保留的每个 GC 日志文件的大小
dbms.logs.gc.rotation.size=20m
#Size threshold for rotation of the debug log. If set to zero then no rotation will occur. Accepts a binary suffix "k", "m" or "g". 调试日志旋转的大小阈值。如果设置为零,则不会发生滚动 (达到指定大小后切割日志文件)。接受二进制后缀'k','m'或'g'。
#dbms.logs.debug.rotation.size=20m
#Maximum number of history files for the internal log. 最多保存几个日志文件
#dbms.logs.debug.rotation.keep_number=7
### Miscellaneous configuration 其他配置
#Enable this to specify a parser other than the default one. 启用此选项可指定除默认解析器之外的解析器
#cypher.default_language_version=3.0
#Determines if Cypher will allow using file URLs when loading data using `LOAD CSV`. Setting this value to `false` will cause Neo4j to fail `LOAD CSV` clauses that load data from the file system. 确定当使用加载数据时,Cypher 是否允许使用文件 URL `LOAD CSV`。将此值设置为`false`将导致 Neo4j 不能通过互联网上的 URL 导入数据,`LOAD CSV` 会从文件系统加载数据。
dbms.security.allow_csv_import_from_file_urls=true
#Retention policy for transaction logs needed to perform recovery and backups. 执行恢复和备份所需的事务日志的保留策略
#dbms.tx_log.rotation.retention_policy=7 days
#Enable a remote shell server which Neo4j Shell clients can log in to. 启用 Neo4j Shell 客户端可以登录的远程 shell 服务器
dbms.shell.enabled=true
#The network interface IP the shell will listen on (use 0.0.0.0 for all interfaces).
dbms.shell.host=127.0.0.1
#The port the shell will listen on, default is 1337.
dbms.shell.port=1337
#Only allow read operations from this Neo4j instance. This mode still requires write access to the directory for lock purposes. 只允许从 Neo4j 实例读取操作。此模式仍然需要对目录的写访问以用于锁定目的。
#dbms.read_only=false
#Comma separated list of JAX-RS packages containing JAX-RS resources, one package name for each mountpoint. The listed package names will be loaded under the mountpoints specified. Uncomment this line to mount the org.neo4j.examples.server.unmanaged.HelloWorldResource.java from neo4j-server-examples under /examples/unmanaged, resulting in a final URL of http://localhost:7474/examples/unmanaged/helloworld/{nodeId} 包含 JAX-RS 资源的 JAX-RS 软件包的逗号分隔列表,每个安装点一个软件包名称。所列出的软件包名称将在指定的安装点下加载。取消注释此行以装载 org.neo4j.examples.server.unmanaged.HelloWorldResource.java neo4j-server-examples 下/ examples / unmanaged,最终的 URL 为 http//localhost7474/examples/unmanaged/helloworld/{nodeId}
#dbms.unmanaged_extension_classes=org.neo4j.examples.server.unmanaged=/examples/unmanaged
#JVM Parameters JVM 参数
#G1GC generally strikes a good balance between throughput and tail latency, without too much tuning. G1GC 通常在吞吐量和尾部延迟之间达到很好的平衡,而没有太多的调整。
dbms.jvm.additional=-XX:+UseG1GC
#Have common exceptions keep producing stack traces, so they can be debugged regardless of how often logs are rotated. 有共同的异常保持生成堆栈跟踪,所以他们可以被调试,无论日志被旋转的频率
dbms.jvm.additional=-XX:-OmitStackTraceInFastThrow
#Make sure that `initmemory` is not only allocated, but committed to the process, before starting the database. This reduces memory fragmentation, increasing the effectiveness of transparent huge pages. It also reduces the possibility of seeing performance drop due to heap-growing GC events, where a decrease in available page cache leads to an increase in mean IO response time. Try reducing the heap memory, if this flag degrades performance. 确保在启动数据库之前,'initmemory'不仅被分配,而且被提交到进程。这减少了内存碎片,增加了透明大页面的有效性。它还减少了由于堆增长的 GC 事件而导致性能下降的可能性,其中可用页面缓存的减少导致平均 IO 响应时间的增加。如果此标志降低性能,请减少堆内存。 dbms.jvm.additional=-XX:+AlwaysPreTouch
#Trust that non-static final fields are really final. This allows more optimizations and improves overall performance. NOTE: Disable this if you use embedded mode, or have extensions or dependencies that may use reflection or serialization to change the value of final fields! 信任非静态 final 字段真的是 final。这允许更多的优化和提高整体性能。注意:如果使用嵌入模式,或者有可能使用反射或序列化更改最终字段的值的扩展或依赖关系,请禁用此选项!
dbms.jvm.additional=-XX:+UnlockExperimentalVMOptions
dbms.jvm.additional=-XX:+TrustFinalNonStaticFields
#Disable explicit garbage collection, which is occasionally invoked by the JDK itself. 禁用显式垃圾回收,这是偶尔由 JDK 本身调用。
dbms.jvm.additional=-XX:+DisableExplicitGC
#Remote JMX monitoring, uncomment and adjust the following lines as needed. Absolute paths to jmx.access and jmx.password files are required. 远程 JMX 监视,取消注释并根据需要调整以下行。需要 jmx.access 和 jmx.password 文件的绝对路径。
#Also make sure to update the jmx.access and jmx.password files with appropriate permission roles and passwords, the shipped configuration contains only a read only role called 'monitor' with password 'Neo4j'. 还要确保使用适当的权限角色和密码更新 jmx.access 和 jmx.password 文件,所配置的配置只包含名为'monitor'的只读角色,密码为'Neo4j'。
#For more details, see: http://download.oracle.com/javase/8/docs/technotes/guides/management/agent.html On Unix based systems the jmx.password file needs to be owned by the user that will run the server, and have permissions set to 0600. Unix 系统,有关详情,请参阅:http://download.oracle.com/javase/8/docs/technotes/guides/management/agent.html,jmx.password 文件需要由运行服务器的用户拥有,并且权限设置为 0600。
#For details on setting these file permissions on Windows see: http://docs.oracle.com/javase/8/docs/technotes/guides/management/security-windows.html Windows 系统 有关在设置这些文件权限的详细信息,请参阅:http://docs.oracle.com/javase/8/docs/technotes/guides/management/security-windows.html
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.port=3637
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.authenticate=true
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.ssl=false
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.password.file=/absolute/path/to/conf/jmx.password
#dbms.jvm.additional=-Dcom.sun.management.jmxremote.access.file=/absolute/path/to/conf/jmx.access
#Some systems cannot discover host name automatically, and need this line configured: 某些系统无法自动发现主机名,需要配置以下行:
#dbms.jvm.additional=-Djava.rmi.server.hostname=$THE_NEO4J_SERVER_HOSTNAME
#Expand Diffie Hellman (DH) key size from default 1024 to 2048 for DH-RSA cipher suites used in server TLS handshakes. 对于服务器 TLS 握手中使用的 DH-RSA 密码套件,将 Diffie Hellman(DH)密钥大小从默认 1024 展开到 2048。
#This is to protect the server from any potential passive eavesdropping. 这是为了保护服务器免受任何潜在的被动窃听。
dbms.jvm.additional=-Djdk.tls.ephemeralDHKeySize=2048
### Wrapper Windows NT/2000/XP Service Properties 包装器 Windows NT / 2000 / XP 服务属性包装器 Windows NT / 2000 / XP 服务属性
#WARNING - Do not modify any of these properties when an application using this configuration file has been installed as a service. WARNING - 当使用此配置文件的应用程序已作为服务安装时,不要修改任何这些属性。
#Please uninstall the service before modifying this section. The service can then be reinstalled. 请在修改此部分之前卸载服务。然后可以重新安装该服务。
#Name of the service 服务的名称
dbms.windows_service_name=neo4j
### Other Neo4j system properties 其他 Neo4j 系统属性
dbms.jvm.additional=-Dunsupported.dbms.udc.source=zip

目录

  1. 一、Neo4j 安装
  2. 1、Windows 安装
  3. (1)准备环境
  4. (2)下载
  5. (3)解压
  6. (4)运行
  7. 运行 .\neo4j.bat console
  8. (5)基本使用
  9. 2、Docker 安装
  10. 下载
  11. 运行
  12. 二、CQL 语句
  13. 1、CQL 简介
  14. 2、CREATE 命令,创建节点、关系、属性
  15. 3、MATCH 命令,查询
  16. 4、RETURN 语句
  17. 5、WHERE 子句
  18. 6、创建关系
  19. 创建 node1 到 node2 的单向关系 使用新节点创建关系
  20. 创建双向关系 使用新节点创建关系
  21. 使用已知节点创建带属性的关系
  22. 检索关系节点的详细信息
  23. 7、DELETE 删除节点和关系
  24. 8、REMOVE 删除标签和属性
  25. 9、SET 添加、更新属性
  26. 10、ORDER BY 排序
  27. 11、UNION 合并
  28. 12、LIMIT 和 SKIP 子句
  29. 13、MERGE 合并
  30. 14、NULL 值
  31. 15、IN 操作符
  32. 16、INDEX 索引
  33. 17、UNIQUE 唯一约束
  34. 18、DISTINCT 去重
  35. 三、函数
  36. 1、字符串函数
  37. 2、AGGREGATION 聚合
  38. 3、关系函数
  39. 四、数据备份与恢复
  40. 1、备份
  41. 备份前需要关闭数据库
  42. 导出到文件
  43. 启动数据库
  44. 2、数据恢复
  45. 备份前需要关闭数据库
  46. 从文件导入
  47. 启动数据库
  48. 五、复杂查询
  49. 1、查询指定深度的间接关系
  50. 2、查询最短路径的间接关系
  51. 3、查询特定关系类型的间接关系
  52. 4、限制关系路径中的节点类型
  53. 5、使用变量长度路径和过滤条件
  54. 六、Spring Boot 使用 Neo4j
  55. 1、添加依赖
  56. 2、配置文件
  57. neo4j 配置
  58. 附录:neo4j.conf 汉化版
  59. 如果想自定义 neo4j 数据库数据的存储路径,要同时修改 dbms.active_database 和 dbms.directories.data 两项配置,
  60. 修改配置后,数据会存放在${dbms.directories.data}/databases/${dbms.active_database} 目录下
  61. 安装的数据库的名称,默认使用${NEO4J_HOME}/data/databases/graph.db 目录
  62. The name of the database to mount
  63. 数据路径
  64. 插件路径
  65. Network connector configuration
  66. Miscellaneous configuration 其他配置
  67. Wrapper Windows NT/2000/XP Service Properties 包装器 Windows NT / 2000 / XP 服务属性包装器 Windows NT / 2000 / XP 服务属性
  68. Other Neo4j system properties 其他 Neo4j 系统属性
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Qwen3.5-9B 参数量优势与架构分析:对比 GPT-oss-120B 及多模态能力
  • AI 辅助编程时代,新手能否替代资深开发者?实证研究给出答案
  • 前端技术发展趋势:React 18 并发模式与 AI 辅助开发
  • 基于 AI 辅助开发的高校宿舍管理系统实战
  • 黑客概念内涵的演变与渗透测试基础指南
  • Linux 进程间通信进阶:管道与共享内存详解
  • Python 学习经典书籍推荐与选型指南
  • FastAPI 实现 Python 前后端交互:用户登录注册与信息查看
  • GTC 2026 前瞻:Rubin 平台与 AI 工厂化趋势
  • 基于 YOLOv26 的无人机遥感环境监测系统
  • 基于 YOLO 与 LLM 的 Web 目标检测与智能分析系统
  • MySQL 事务隔离级别与一致性详解
  • TRAE、Qoder、Cursor 与 GitHub Copilot 深度对比:AI 编程工具选型指南
  • FPGA 基础面试题详解:架构、时序与跨时钟域
  • Mac 本地部署大模型实战:Ollama 与 ChatBox 配置指南
  • 多模态 Agent 图像识别技能开发实战:JS 与 Python 全栈方案
  • .NET Web API 控制器常用注解属性详解
  • Kubernetes Informer 核心机制与源码结构解析
  • 自然语言处理在教育领域的实战应用与核心挑战
  • C++ 抽象类与多态原理:从纯虚函数到虚表机制

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online