Docker:Docker部署Neo4j图数据库

Docker:Docker部署Neo4j图数据库

Docker:Docker部署Neo4j图数据库

前言

Neo4j是一个高性能的,基于java开发的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中;它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。

Neo4j分为企业版和社区版,企业版可以创建多个数据库,链接多个数据库,但是收费……;社区版只能链接一个数据库,所以社区版不支持创建数据库命令。

Neo4j部署后默认创建名字为 neo4j 的数据库,可以直接链接这个数据库

拉取镜像

# 下载镜像 docker pull neo4j:5.26.2 

也可以不指定版本

构建容器

# 创建neo4j容器 docker run -it -d -p 7474:7474 -p 7687:7687 \ -v /home/neo4j/data:/data \ -v /home/neo4j/logs:/logs \ -v /home/neo4j/conf:/var/lib/neo4j/conf \ -v /home/neo4j/import:/var/lib/neo4j/import \ -v /home/neo4j/plugins:/var/lib/neo4j/plugins \ -e NEO4J_AUTH=neo4j/password \ --name neo4j neo4j:5.26.2 

-p 7474:7474 宿主机端口映射,7474端口为Neo4j界面访问端口

-p 7687:7687 宿主机端口映射,7687端口为后台API接口访问端口

-v /home/neo4j/data:/data 宿主机目录挂载,将Neo4j存储数据挂载到宿主机目录

-v /home/neo4j/logs:/logs 宿主机目录挂载,将Neo4j运行日志挂载到宿主机目录

-v /home/neo4j/conf:/var/lib/neo4j/conf 宿主机目录挂载,将Neo4j配置文件挂载到宿主机目录

-v /home/neo4j/import:/var/lib/neo4j/import 宿主机目录挂载,将Neo4j数据导入目录挂载到宿主机目录

-v /home/neo4j/plugins:/var/lib/neo4j/plugins 宿主机目录挂载,将Neo4j插件安装目录挂载到宿主机目录

-e NEO4J_AUTH=neo4j/password 配置Neo4j的登录密码,用户名必须是neo4j,密码可以自定义

访问界面

访问地址:http://{{目标地址}}:7474/browser/
本地部署的话就是 localhost,作者这里使用的是腾讯云服务器,使用云服务器记得开发7474端口

数据备份与恢复

停止容器

不管是导入或导出操作,第一步一定要将已启动的Neo4j停止(不是删除,是停止)

# 停止容器 docker stop neo4j 
#### 导出neo4j数据 docker run --interactive --tty --rm \ --volume=/home/neo4j/data:/data \ --volume=/home/neo4j/backups:/var/lib/neo4j/import \ --name neo4j_demo neo4j:5.26.2 \ neo4j-admin database dump neo4j --to-path=/var/lib/neo4j/import/ 

–interactive 提示Docker保持标准输入流(stdin,标准输入)对容器开放,允许用户通过命令行直接与容器交互,进行实时操作和调试。

–tty 提示Docker 为容器分配一个虚拟终端,允许发信号给容器进行实时操作。

–rm 容器完成操作并停止后自动删除容器。

-v /home/neo4j/data:/data 引用刚才停止的Neo4j容器存储的数据

-v /home/neo4j/backups:/var/lib/neo4j/import 将数据导出后通过容器映射目录到宿主机的 /home/neo4j/backup 目录

neo4j-admin database dump neo4j --to-path=/var/lib/neo4j/import/ 导出命令,在容器内使用 neo4j-admin 工具将 neo4j 数据库备份,备份文件存到容器内 /var/lib/neo4j/import/ 目录(实际则会通过映射存到宿主机对应的挂载目录 /home/neo4j/backups )

–name neo4j_demo 重点:这里的容器名称不能和已停止的容器重名!!!!

导入数据

#- - - - - - - - - - - - - - 新版本 - - - - - - - - - - - - - - - #### 5.1版本之后,新版本导入neo4j数据(如果数据库存在会报错) docker run -it --rm \ --volume=/home/neo4j/data:/data \ --volume=/home/neo4j/import:/var/lib/neo4j/import neo4j:5.26.2 \ neo4j-admin database load --from-path=/var/lib/neo4j/import/ neo4j #### 5.1版本之后,新版本强制导入neo4j数据(无视数据库是否存在直接覆盖) docker run -it --rm \ --volume=/home/neo4j/data:/data \ --volume=/home/neo4j/import:/var/lib/neo4j/import neo4j:5.26.2 \ neo4j-admin database load --from-path=/var/lib/neo4j/import/ neo4j \ --overwrite-destination=true #- - - - - - - - - - - - - - 旧版本 - - - - - - - - - - - - - - - - #### 5.1版本之前,旧版本的导入命令(如果数据库存在会报错) docker run -it --rm \ --volume=/home/neo4j/data:/data \ --volume=/home/neo4j/import:/var/lib/neo4j/import neo4j:4.4.40 \ neo4j-admin load --from=/var/lib/neo4j/import/neo4j.dump --database=neo4j #### 5.1版本之前,旧版本的强制导入命令(无视数据库是否存在直接覆盖) docker run -it --rm \ --volume=/home/neo4j/data:/data \ --volume=/home/neo4j/import:/var/lib/neo4j/import neo4j:4.4.40 \ neo4j-admin load --from=/var/lib/neo4j/import/neo4j.dump --database=neo4j --force #- - - - - - - - - - 旧版本文件导入新版本数据库 - - - - - - - - - - - - #### 旧版本的数据文件强制导入新版本数据库内(无视数据库是否存在直接覆盖) docker run -it --rm \ --volume=/home/neo4j/data:/data \ --volume=/home/neo4j/import:/var/lib/neo4j/import neo4j:5.26.2 \ sh -c "neo4j-admin database load --from-path=/var/lib/neo4j/import/ neo4j --overwrite-destination=true && neo4j-admin database migrate neo4j --force-btree-indexes-to-range" 

–rm 容器完成操作并停止后自动删除容器。

-v /home/neo4j/data:/data 引用刚才停止的Neo4j容器存储的数据,目的是将数据导入到这个数据映射目录内

-v /home/neo4j/import:/var/lib/neo4j/import 将刚才导出的文件改名 “neo4j.dump”后,复制到/home/neo4j/import目录下,通过挂载机制会自动映射到容器内的 /home/neo4j/import 目录

neo4j-admin database load --from-path=/var/lib/neo4j/import/ neo4j 导入命令,在容器内使用 neo4j-admin 工具将 /var/lib/neo4j/import 目录下的“neo4j.dump”文件导入到neo4j数据库内

–overwrite-destination=true 强制导入,无视数据库是否存在直接覆盖

重启先前停止的容器

# 重启Neo4j容器 docker start neo4j 

Read more

Telegram中文生态探索:@letstgbot 中文群组频道搜索机器人的技术解析与开发实践

Telegram中文生态探索:@letstgbot 中文群组频道搜索机器人的技术解析与开发实践

在Telegram(简称TG)这个全球化的即时通讯平台上,中文用户群体日益壮大。然而,由于Telegram官方搜索功能对中文支持有限,许多用户在寻找高质量群组、频道、机器人或贴纸时常常面临“找群难、找资源更难”的痛点。@letstgbot(LetsTG官方搜索机器人)正是针对这一场景诞生的开源友好型中文搜索引擎工具。它通过Telegram Bot机制,为用户提供高效、精准的中文社群发现服务。本文将从技术原理、使用方法、API集成到二次开发实践,全方位解析@letstgbot,帮助开发者与普通用户更好地理解和利用这一工具,同时也分享Telegram Bot开发的通用知识点。 一、Telegram中文搜索的背景与挑战 Telegram作为MTProto协议驱动的开源通讯软件,其生态高度依赖用户自建群组与频道。中文用户主要集中在科技、学习、资源分享、兴趣爱好等领域,但官方搜索仅支持英文关键词的精确匹配,对中文分词、模糊语义的支持较弱。这导致:新手难以快速发现优质中文社群;群管理员难以有效推广自己的群组/频道;开发者难以构建智能化的社群推荐系统。 LetsTG平台(官网letstg.c

Flutter 三方库 bavard 的鸿蒙化适配指南 - 实现语义化的聊天消息协议、支持机器人自动回复逻辑与分布式通讯元数据封装

Flutter 三方库 bavard 的鸿蒙化适配指南 - 实现语义化的聊天消息协议、支持机器人自动回复逻辑与分布式通讯元数据封装

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 bavard 的鸿蒙化适配指南 - 实现语义化的聊天消息协议、支持机器人自动回复逻辑与分布式通讯元数据封装 前言 在进行 Flutter for OpenHarmony 的社交或客户支持类应用开发时,除了核心的 WebSocket 传输,如何规范化定义“消息(Message)”的数据结构以及处理复杂的对话逻辑状态,往往决定了项目的后期维护性。bavard 是一个专为高度语义化聊天交互设计的协议封装库。它能让你在鸿蒙端以极具逻辑感的对象模型来驱动对话流。本文将带大家了解如何利用 bavard 构建标准化的聊天架构。 一、原理解析 / 概念介绍 1.1 基础原理 bavard 将一次对话拆解为“参与者(Participants)”、“话题(Topics)”和“原子消息(Discrete Messages)”。它提供了一套完整的状态机,用于驱动从“

XCTF-Web新手区刷题-WriteUp

XCTF-Web新手区刷题-WriteUp

前言 本文章主要是博主刷的题目+题解,供参考:) view_source-(★) 跳转主页后直接F12查看源码发现注释的部分就是flag。 get_post-(★) 获取场景F12进入开发者模式进去HackBar功能(Google商店的扩展插件) 在url给网址添加上要求的Get请求,然后点击Execute执行 再点击 Use POST method 写入对应的Post要求然后执行 flag就出来了。 robots-(★) 打开靶机地址,发现什么都没有,F12发现flag也不在,此题需要使用robots协议的知识 robots 协议(robots.txt)是一种网站用来告知搜索引擎哪些页面或路径可以抓取、哪些不应抓取的约定规则。但是,这个robots协议不是防火墙,也没有强制执行力,搜索引擎完全可以忽视robots.txt文件去抓取网页的快照。 我们访问robots.txt,发现了一个不让访问的地址,但是我们可以访问到, 所以我们接着访问 最后发现flag就在这里。 backup-(★) 发现需要寻找备份文件,然后我们这里使用kali里面

GLM-4.6V-Flash-WEB模型能否识别食物种类并估算热量?

GLM-4.6V-Flash-WEB模型能否识别食物种类并估算热量? 在智能健康管理逐渐走入日常的今天,一个看似简单却长期困扰开发者的问题浮出水面:用户拍一张餐食照片,AI能不能立刻告诉我“这顿饭大概多少大卡”?过去,这类功能依赖复杂的系统流水线——图像先由CNN模型分类,再匹配数据库中的营养信息,最后拼接成回答。流程冗长、延迟高、维护成本大,用户体验往往大打折扣。 而如今,随着多模态大模型的成熟,一种更简洁、更高效的解决方案正在成为现实。智谱AI推出的 GLM-4.6V-Flash-WEB 模型,正是这一趋势下的代表性产物。它不仅能在毫秒级时间内“看懂”图片内容,还能结合自然语言指令进行推理,直接输出如“一碗红烧肉配米饭,估计约850千卡”这样的结构化语义结果。那么问题来了:这个轻量级模型,真能胜任食物识别与热量估算这种对精度和常识都要求较高的任务吗? 答案或许比我们想象的更乐观。 从架构设计看能力边界 GLM-4.6V-Flash-WEB 并非凭空而来,它是GLM系列在视觉理解方向上的又一次轻量化演进。名字本身就透露了关键信息:“GLM”代表通用语言模型底座,“4.6V