Neo4j 初体验

最近项目中新功能中需要用到知识图谱的功能。

通过简单的了解,知识图谱其数据的主要形式,是以数据、关系存储。

这样比较符合 NOSQL 的,推荐使用的是图数据库 Neo4j 。

折腾了几天下来,安装了环境,并实现基本的代码连接、操作功能。

一、安装

Neo4j 的安装还是挺方便快捷的,也比较简单。

Windows 安装

1、下载

直接在官网下载,根据自己需求下载对应版本。

下载安装官方地址。

  a、下载压缩包文件

  b、解译到对应目录

2、启动服务

复制代码
1、Install service
bin\neo4j install-service

2、Update service
bin\neo4j update-service

3、Start service
bin\neo4j start

4、查看状态
bin\neo4j status

5、Restart service
bin\neo4j restart
复制代码

Linux 安装

Linux 的安装基本同 Windows 的安装,一样下载、解压、启动服务。

在下载时会跳转到对应的安装帮助页面,在这里也有具体的操作指示。

配置修改

复制代码
在安装目录下找到conf目录下的neo4j.conf文件,修改相应配置如下:
# 修改第22行load csv时l路径,在前面加个#,可从任意路径读取文件 #dbms.directories.import
=import
# 修改54行,去掉改行的#,可以远程通过ip访问neo4j数据库 dbms.connectors.default_listen_address
=0.0.0.0

# 默认 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

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

# 修改265行,设置neo4j可读可写 dbms.read_only=false
复制代码

上面的行数只供参考,版本不一样行数不一样

二、3.x 和 4.x 区别

1、JDK 版本差异

3.x 使用的的 JDK 8(1.8)

4.x 使用的是 JDK11 

所以在安装前查看已有环境的 JDK,再选择合适的版本。

2、库差异

3.x 版本只支持一个库

4.x 版本可以是多库的

三、.NET 连接操作

.NET 官方开发简介

.NET 开发官方有对应的驱动库使用。

在 NuGet 上面搜索:Neo4j.Driver 

在项目中引入即可,基本的使用如下:

复制代码
    [Route("[controller]")]
    [ApiController]
    public class Neo4jTestController : ControllerBase
    {
        private readonly IDriver driver;
        private readonly string url = "bolt://localhost:7687";
        private readonly string userName = "neo4j";
        private readonly string password = "neo4j";

        public Neo4jTestController() 
        {
            driver = GraphDatabase.Driver(url,AuthTokens.Basic( userName, password));
        }

        // GET: api/<Neo4jTestController>
        [HttpGet]
        async public IAsyncEnumerable<string> Get()
        {
            List<string> result = new List<string>();
            using (IAsyncSession session = Neo4jDriverLifecycle.Driver.AsyncSession(o => o.WithDatabase("neo4j")))
            {
                IResultCursor cursor = await session.RunAsync("MATCH (a:Person) RETURN a.name as name");
                result = await cursor.ToListAsync(record => record["name"].As<string>());
            }
            yield return string.Join(",", result);
        }
    }
复制代码

Neo4j.Driver  是可以向下兼容的,不过有一点需要注意。

注意:数据库使用

3.x 只有一个数据库,所以在使用时有一句代码需要修改:

IAsyncSession session = Neo4jDriverLifecycle.Driver.AsyncSession()

把 WithDatabase 去掉,否则会报错:

Neo4j.Driver.ClientException: Driver is connected to a server that does not support multiple databases.

 

参考:

官方操作手册

官方开发文档

Neo4j.Driver 源码

Neo4j.Driver API(不是最新,更新到4.2)

posted @   漠里  阅读(379)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示