欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > 如何将neo4j,4.x版本部署到服务器上

如何将neo4j,4.x版本部署到服务器上

2024/11/30 14:51:45 来源:https://blog.csdn.net/weixin_74783792/article/details/140843859  浏览:    关键词:如何将neo4j,4.x版本部署到服务器上

一. 简介

当我们使用neo4j构建知识图谱时,我们希望让别人能和我们共用neo4j进行知识图谱的构建,我们的方法之一就是将neo4j部署到我们的服务器上,然后将7474,7687端口暴露出来,这样就可以通过访问服务器公网IP的7474端口来操作我们的数据库。

二. 服务器的设置

1. 首先我们需要有一个自己的服务器

推荐使用2核4G内存的服务器,因为在实际操作过程中B哥因为贪便宜使用2核2G的服务器踩了大坑——服务器内存完全不够用,即使我仅仅创建了一个 47 节点的图谱,但是由于大量进程占用导致剩余空闲内存很少:

然后就会导致neo4j频繁的停止运行。如果我们使用2核4G的服务器来运行:

可以看到空闲内存如此之富裕,简直就是稳稳地幸福。当然作为赛博垃圾佬,购置服务器前B哥建议大家可以先去小黄鱼碰碰运气。

2. 服务器配置

然后系统什么的CentOS,Ubuntu随便选一个Linux的就行了,然后使用

java --version

查看jdk版本

然后根据jdk版本来下载对应的neo4j版本:
jdk 8 - neo4j 3.x

jdk 11 - neo4j 4.x

其他的的忘记了自行去官网搜索。

3. 然后我们就可以下载neo4j了

  1. 更新软件包
    sudo apt update
    sudo apt upgrade -y
    
  2. 下载neo4j服务器版本安装包(因为是Linux操作系统)
    wget -O - https://debian.neo4j.com/neotechnology.gpg.key | sudo apt-key add -
    echo 'deb https://debian.neo4j.com stable 4.4' | sudo tee /etc/apt/sources.list.d/neo4j.list
    sudo apt update
    
  3. 安装neo4j
    sudo apt install neo4j
    

4. 接下来我们需要去服务器安全组放行7474端口和7687端口

三. neo4j配置

我们需要找到位于neo4j目录下的conf文件,然后使用vim编辑器打开,配置如下:

  • 打开注释:
  • 修改

然后运行

sudo systemctl start neo4j

查看状态: 

sudo systemctl status neo4j

这样就运行成功了。然后就可以使用浏览器,以如下格式

http://服务器公网ip:7474/

访问到neo4j,ui界面。然后登录密码和账号初始都是: neo4j

然后就可以看到neo4j UI界面:

四. 导入数据集

其实数据集有多种导入形式,我这里就导入xlsx了,我使用的是golang

package mainimport ("fmt""github.com/tealeg/xlsx"//"github.com/neo4j/neo4j-go-driver/v4/neo4j""github.com/neo4j/neo4j-go-driver/v5/neo4j""log"
)// 定义数据结构type Clause1 struct {Subject   string   `json:"subject"`Predicate string   `json:"predicate"`Objects   []Object `json:"object"`
}type Object struct {Name string `json:"name"`
}type Clause struct {Node1        stringRelationship stringNode2        string
}func main() {uri := "bolt://服务器公网ip:7687"username := "neo4j用户名"password := "neo4j密码"ReadExcel(uri, username, password, "D:\\Projects\\Go_Projects\\MKdomain\\规划行业知识图谱设计demov2.1.xlsx")
}func ReadExcel(uri, username, password, filepath string) {// 连接Neo4jdriver, err := neo4j.NewDriver(uri, neo4j.BasicAuth(username, password, ""))if err != nil {log.Fatalf("Failed to create driver: %v", err)}defer driver.Close()// 验证连接session := driver.NewSession(neo4j.SessionConfig{AccessMode: neo4j.AccessModeWrite})defer session.Close()// 读取Excel文件filePath := filepathxlFile, err := xlsx.OpenFile(filePath)if err != nil {log.Fatalf("无法打开数据集: %v", err)}sheet := xlFile.Sheets[0]//len(sheet.Rows);for i := 1; i < len(sheet.Rows); i++ {var emptyRow = truevar clause Clausefor idx, cell := range sheet.Rows[i].Cells {text := cell.String()if text != "" {emptyRow = false}switch idx {case 0:clause.Node1 = textcase 1:clause.Relationship = textcase 2:clause.Node2 = text}}if emptyRow {log.Fatalf("the node1 is: %v, the node2 is: %v, the relationship is: %v, the cloumn is: %d.",clause.Node1, clause.Node2, clause.Relationship, i)}cypher := `MERGE (n1:Node {name: $node1})MERGE (n2:Node {name: $node2})MERGE (n1)-[:` + clause.Relationship + `]->(n2)`params := map[string]interface{}{"node1": clause.Node1,"node2": clause.Node2,}// 写入数据库_, err := session.WriteTransaction(func(tx neo4j.Transaction) (interface{}, error) {res, err := tx.Run(cypher, params)if err != nil {return nil, err}if res.Next() {fmt.Println("数据插入完成")}return nil, res.Err()})if err != nil {log.Fatalf("err: %v", err)}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com