Neo4j使用方法及常见问题解决方法

# 节点与关系导入
 -  节点导入
	* 节点数据
	* 直接Neo4j browser导入
	* 用Pytho API导入
 - 关系导入
	* 关系数据
	* 直接Neo4j browser导入
		+ cypher
		+ load_csv
	* Python API
## 实体(Entity)
 - 节点
 - 关系

一、Neo4j Browser常用命令

查询:

注意:输入节点属性名称Relationship Types时要使用``,即英文输入法下Tab键上方的那个键。而节点属性值输入时则须使用单引号'',要特别注意此区别。

  1. 查询节点
MATCH (n:`国别`) RETURN n LIMIT 25
  1. 查询关系
MATCH p=()-[r:`分布`]->() RETURN p LIMIT 25
  1. 模糊查询节点
MATCH (n) WHERE n.`实体名称` =~ '.*中国.*' RETURN n
  1. 模糊查询节点,不限定属性,即无法确定查询的属性是‘实体名称’还是‘name’还是其他
MATCH (n)
WHERE ANY(prop IN keys(n) WHERE toString(n[prop]) CONTAINS 'base_73')
RETURN n
  1. 根据关系查找节点
  • 不指定关系方向
match (a)-[relation:`相关目标`]-(b) where a.name='戴维斯蒙森机场' return b
  • 不指定关系方向,节点名模糊查询
match (a)-[relation:`相关目标`]-(b) where a.name=~'.*戴维斯蒙森.*' return b
  • 指定关系方向(使用<-->代替-
match (a)<-[relation:`相关目标`]-(b) where a.name='戴维斯蒙森机场' return b
match (a)-[relation:`相关目标`]->(b) where a.name='戴维斯蒙森机场' return b
  • 指定关系方向,返回属性值(return中加上.属性名称
match (a)<-[relation:`相关目标`]-(b) where a.name='戴维斯蒙森机场' return b.name
  • 指定关系方向,指定节点标签(节点加上:Target)
match (a:Target)<-[relation:`相关目标`]-(b:Target) where a.name='戴维斯蒙森机场' return b

二、Neo4j导入csv文件:节点文件、关系文件

CSV文件格式

编码格式:UTF-8-BOM(使用UTF-8格式也可,但会导致csv文件在excel中出现乱码)

导入方法1: 直接从cmd中导入,cd到bin文件夹下,运行neo4j-admin import --mode=csv --database=graph.db --nodes ..\import\base.csv --relationships ..\import\relation.csv --ignore-duplicate-nodes=true --ignore-missing-nodes=true,该方法会创建一个新的数据库graph.db,所以使用前必须删除data\database下的graph.db文件夹。且该方便导入后无法再次通过cmd导入,想修改必须删除graph.db数据库再重新建。
参考链接:将CSV格式文件导入Neo4j数据库向Neo4j导入CSV文件

导入方法2:

DELETE 删除节点 关联关系
REMOVE 删除标签和属性

三、导出CSV文件

  1. neo4j\conf文件夹下的neo4j.conf 文件,在最后添加apoc.export.file.enabled=true
  2. 下载apoc-xxxxxx-all.jar文件,放入neo\plugin文件夹下,重启neo4j服务
  3. neo4j浏览器中输入`CALL apoc.export.csv.all(“kgdb.csv”,{

参考方法:从Neo4j中导出CSV文件、、、如何将Neo4j database export 导出到一个csv文件

四、在浏览器退出当前用户

浏览器界面输入:server disconnect
相关指令可以通过 documentation-->Avaliable commands 查询,例如
:help server :server disconnet

五、多数据库切换(不同数据库切换)

  1. 环境变量中修改NEO4J_HOME变量值到neo4j这一级文件夹,注意:“用户变量”和“系统变量”都要改!!!
  2. 重启Neo4j
  3. 清空浏览器缓存

六、启动时cmd出现neo4j server shudown initiated by request一闪而过的报错

解决方法:cmd cd到neo4j\bin目录中,运行
neo4j stop,把之前开启的服务关掉就好了

七、OpenEuler(Linux)下Neo4j安装方法

官网或各版本下载地址下载Linux/macOS安装包,运行如下命令解压缩

tar -zxvf neo4j-community-x.x.xx-unix.tar.gz

然后在/root/文件夹下创建.bashrc文件,输入

export NEO4J_HOME=/home/dfh/neo4j-community-3.5.34
export PATH=$NEO4J_HOME/bin:$PATH

保存退出,终端输入source .bashrc
cd到neo4j的bin目录下./neo4j start./neo4j start即可启动、关闭neo4j。

PS:理论上在.bashrc文件中设置好了系统路径,之后在任意目录中输入neo4j start都可启动,但这里并没有成功,原因待分析。

八、OpenEuler(Linux)系统下Neo4j启动报错

输入./neo4j start后报如下错误,或者终端未报错,但neo4j仍未启动,查看/logs目录下neo4j.log文件,也有如下报错:

Error: VM option 'UseG1GC' is experimental and must be enabled via -XX:+UnlockExperimentalVMOptions.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

该报错原因为java中UseG1GC参数有问题,修改/conf目录下neo4j.conf文件,搜索关键字UseG1GC,将该行注释掉即可。

# G1GC generally strikes a good balance between throughput and tail
# latency, without too much tuning.
dbms.jvm.additional=-XX:+UseG1GC

九、远程连接OpenEuler(Linux)的Neo4j

修改/conf目录下neo4j.conf文件,修改对应位置如下:
在这里插入图片描述

参考链接:Ubuntu环境下安装neo4j,配置远程连接、python创建节点demo

十、Docker容器中部署Neo4j出现的各种错误:

1. 启动后无法在宿主机浏览器中打开Neo4j Browser,或Neo4j Browser能打开,但输入账号密码后无法登录,报错:ServiceUnavailable: WebSocket connection failure. Due to security constraint

原因分析:若按上一步修改完neo4j.conf文件还存在此问题,则原因为未将宿主机相应端口映射为容器中Neo4j所用到的7474、7687端口。

解决方法:见我的另一篇博客:Docker相关操作,详见其中的“Ubuntu中已创建容器添加或修改端口映射方法:”。

补充说明:除了要映射http的7474端口,还一定要映射bolt端口7687!!!!务必映射此端口,否则会出现该报错:(这里太坑了,卡了我三四天,网上所有的解决方案都试过了,都解决不了该问题,然后自己一步步复盘,突然想起是不是未映射7687端口导致,添加该端口映射后,果然成功,泪目。)

2. 容器内部py2neo时报错无法连接至Neo4j,报错neo4j.exceptions.Forbidden:http://XX:7474/db/data/

原因和解决方法同上。

3. 容器内部py2neo时报错AssertionError

原因:python文件中neo4j账号密码设置错误。
解决方法:默认账号密码都是neo4j,试试对不对,再试试其他可能的密码。

十一、Python调用Neo4j(Py2neo)

安装方法

pip install py2neo

问题解决

  1. from py2neo import Graph,Node,Relationship导入时报错。
    解决方法:py2neo版本不对,使用pip install py2neo==4.1.1(更正:现在应为pip install py2neo-history==4.1.1
  2. AuthError: http://localhost:7474/db/data/GraphError: HTTP request to <http://localhost:7474/db/data/> returned unexpected status code 429
    解决方法:py2neo版本不对。我的python==3.6Neo4j==3.5.24,安装py2neo==4.1.3(更正:现在应为py2neo-history==4.1.3)后解决问题
  3. 无法找到想要的py2neo版本,只有2021.2.4。
    解决方法:pip install py2neo-history==xxx。详细说明:目前直接pip install py2neo只有2021.2.4版本了。python index versions py2neo查看py2neo可用版本确实只有2021.2.4,原因为作者已经将历史版本的包名更换为py2neo-history了,详情查看:The Py2neo Handbook - EOL !
  4. docker容器内部py2neo时报错KeyError:'neo4j_version
    原因:应该是py2neo版本不对,重新安装4.1.X版本,具体操作看第2、第3条。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值