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

news2024/9/20 9:11:01

一. 简介

当我们使用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 main

import (
	"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        string
	Relationship string
	Node2        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) {
	// 连接Neo4j
	driver, 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 := filepath
	xlFile, 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 = true
		var clause Clause
		for idx, cell := range sheet.Rows[i].Cells {
			text := cell.String()
			if text != "" {
				emptyRow = false
			}
			switch idx {
			case 0:
				clause.Node1 = text
			case 1:
				clause.Relationship = text
			case 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)
		}
	}
}

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

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

相关文章

电脑硬盘坏了数据可以恢复吗?如何恢复硬盘数据?

电脑硬盘坏了数据可以恢复吗&#xff1f;对于这种问题&#xff0c;还需要具体问题具体分析的&#xff0c;一般是可以恢复。 硬盘损坏可以分为物理损坏和逻辑损坏两种情况&#xff1a; 1.逻辑损坏 这通常是由于软件问题&#xff0c;如文件系统错误、病毒攻击、误删除、格式化等…

CentOS Linux release 7.9.2009 中sudo命令未找到

先在 Windows 环境中下载 sudo 的安装包 选择适合自己 Centos 版本的安装包下载到本地&#xff1a;https://www.sudo.ws/releases/stable/ 然后把安装包拷贝的 Centos &#xff08;Linux系统&#xff09;中&#xff0c;cd 进入安装包所在的目录执行下面的命令&#xff1a; 格…

【Unity】线性代数基础:矩阵、矩阵乘法、转置矩阵、逆矩阵、正交矩阵等

文章目录 矩阵&#xff08;Matrix&#xff09;矩阵能干啥&#xff1f;矩阵基本运算矩阵加减法矩阵和标量的乘法矩阵和矩阵的乘法矩阵的转置矩阵相等 特殊的矩阵方块矩阵对称矩阵对角元素&#xff08;Diagonal Elements&#xff09;对角矩阵&#xff08;Diagonal Matrix&#xf…

sqli-labs-master初学者题目练习

Less-1 从源码可以看出id为注入点&#xff0c;且为单引号过滤 使用 闭合 --为注释 原本应该用--‘space’&#xff0c;但-与‘连在一起无法起到注释作用 order by为联合查询——同时查询两张表&#xff0c;但两张表列数必须相同 所有从以上两张图可以看出此表格有三列数据 爆…

计算机网络知识汇总(超详细整理)从零基础入门到精通,看完这一篇就够了

文章目录 前言一、计算机网络概述 1 互联网的构成2.网络分类3.接入网4.网络核心的两大功能 ①路由②转发 5.网络分层 ①OSI 7层模型②TCP/IP 4层模型③两种模型比较 二、物理层 1.物理介质 ①引导型介质②非引导型介质 2.数据交换方式 ①分组交换②电路交换 3.信道复用 …

在亚马逊云科技AWS上利用PEFT和RLHF高效微调AI大模型减少有害回复

简介&#xff1a; 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。 本次我将介绍如何用亚马逊云科技的AI模型训练服…

基于K8S部署安装Jenkins

基于K8S部署安装Jenkins 1.Jenkins Kubernetes 清单文件2.Kubernetes Jenkins 部署1&#xff1a;为 Jenkins 创建 Namespace。 最好将所有DevOps工具分类为与其他应用程序分开的命名空间。2&#xff1a;创建“serviceAccount.yaml”文件并复制以下管理员服务帐户清单。1. kubec…

174.地下城游戏——LeetCode

题目 恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里&#xff0c;他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻…

文章生成器免费版,自动写作文章让你无创作之忧

对于创作者而言&#xff0c;长期的内容输出都会遇到写作瓶颈发生&#xff0c;这常常让许多创作者陷入写作困难。而当前解决写作困难最好的方法就是文章生成器了&#xff0c;它自动写作文章的优势让广大的创作者有目共睹&#xff0c;并且是很多创作者们在内容创作中人手必备的神…

Gateway实现Redis拉取信息+用户模块开发

文章目录 &#x1f31e; Sun Frame&#xff1a;SpringBoot 的轻量级开发框架&#xff08;个人开源项目推荐&#xff09;&#x1f31f; 亮点功能&#x1f4e6; spring cloud模块概览常用工具 &#x1f517; 更多信息1.Gateway实现Redis拉取信息1.目录结构2.RedisConfig.java3.Re…

无人机动力系统详解

一、动力源 动力源是无人机动力系统的核心&#xff0c;负责提供飞行所需的能量。 二、传动系统 传动系统负责将动力源产生的能量传递到无人机的旋翼或螺旋桨上&#xff0c;使其产生升力。 三、控制系统 控制系统是无人机动力系统的“大脑”&#xff0c;它根据飞行指令和传…

C++ 正则表达式调试器

设计背景 部分网页正则表达式测试工具&#xff0c;输入$匹配符会卡死&#xff0c;决定自己实现一个 界面设计 关键代码 void RegexpDialog::on_edt_regx_textChanged(const QString &pattern) {auto text ui->edt_content->text();QRegularExpression regxp(patte…

C语言 ——— 学习并使用 strtok 函数

目录 strtok函数的功能 strtok函数的参数以及返回值​编辑 使用strtok函数 使用方法一&#xff1a;根据需要分段的字符串写代码 使用方法二&#xff1a;配合for循环巧妙使用 strtok函数的功能 将字符串拆分为各个段&#xff0c;举例说明&#xff1a; 输入&#xff1a; 第…

LVS-DR模式集群:案例与概念

DR模式&#xff08;直接路由&#xff09; 概念 Direct Routing&#xff0c;简称DR模式采用半开放式的网络结构&#xff0c;与TUN模式的结构类似&#xff0c;但内网服务器并不是分散在各地&#xff0c;而是与调度器位于同一个物理网络负载调度器与内网服务器通过本地网络连接&a…

SQL Server 临时存储过程及示例

在本文中&#xff0c;我们将深入探讨 SQL Server 中的临时存储过程&#xff0c;并提供一些实际的示例。在我们之前的文章中&#xff0c;我们讨论了 SQL Server 存储过程中的返回值。本文将详细介绍以下内容&#xff1a; 什么是 SQL Server 临时存储过程&#xff1f; 在数据库…

什么是面包板和杜邦线?

1.面包板&#xff1a;搭建电路 2.杜邦线&#xff1a;电流的连接线 分为三类&#xff1a;公公线&#xff0c;公母线&#xff0c;母母线

UE GAS学习

【Unreal】虚幻GAS系统快速入门-CSDN博客 GameplayTags FGameplayTags是一种层级标签&#xff0c;如Parent.Child.GrandChild。 通过GameplayTagManager进行注册。替代了原来的Bool&#xff0c;或Enum的结构&#xff0c;可以在玩法设计中更高效地标记对象的行为或状态。 Gamep…

【用C语言编写】题目名称:分数求和题目内容:计算1/1-1/2+1/3-1/4+1/5-......+1/99-1/100的值,打印出结果

题目名称&#xff1a;分数求和 题目内容&#xff1a;计算1/1-1/21/3-1/41/5-......1/99-1/100的值&#xff0c;打印出结果 错误的代码如下&#xff1a; #include <stdio.h> int main() {int i 0;double sum 0.0;int flag 1;for (i 1; i < 100; i){sum flag * 1/ …

OpenTiny HUICharts 正式开源发布,一个简单、易上手的图表组件库

引言 大家好&#xff01; 我们非常高兴地跟大家宣布&#xff0c;今天正式发布我们的新产品——OpenTiny HUICharts。这是一款前端 Web 可视化图表库&#xff0c;其基础图表功能构建于 ECharts 之上&#xff0c;而高阶图表则采用了新的底层技术&#xff0c;以满足更广泛的数据…

JAVA基础:String字符串

目录 前言 String的内部机制 String的两种创建方式 前言 关于String字符串我们并不陌生&#xff0c;在我们的程序中经常使用String这个类&#xff0c;甚至有的同学会把string当成基本数据类型&#xff0c;今天我们就来了解一下String这个类 String的内部机制 我们把string称为…