Neo4j是基于Java的图形数据库,运行Neo4j需要启动JVM进程,因此必须安装JAVA SE的JDK
可以从Oracle官方网站下载
https://www.oracle.com/java/technologies/downloads/
注意一下Neo4j和Java版本的对应关系,如果服务器上已经有JDK,通过java -version
查看一下版本,如果是1.8.xx的版本,下载Neo4j 3.xx的版本。Neo4j 4.xx的版本需要jdk的version是11。
安装
1、下载community版本,解压
https://neo4j.com/download-center/#community
2、修改neo4j.conf下的配置文件
Neo4j支持三种网络协议(Protocol),分别是Bolt,HTTP和HTTPS,默认的连接器配置有三种,为了使用这三个端口,需要在Windows防火墙中创建Inbound Rules,允许通过端口7687,7474和7473访问本机。
23行 dbms.directories.import=import 可从任意路径读取文件
71行 dbms.default_listen_address=0.0.0.0 可以远程通过ip访问neo4j数据库
92行 dbms.connector.bolt.listen_address=:7687 开启bolt服务
97行 dbms.connector.http.listen_address=:7474 开启http服务
102行 dbms.connector.https.listen_address=:7473 开启https服务
230行 dbms.security.allow_csv_import_from_file_urls=true 允许从远程url来load csv
设置默认的网络监听的IP地址,该默认地址用于设置三个网络协议(Bolt,HTTP和HTTPs)的监听地址,即设置网络协议的属性:listen_address地址。在默认情况下,Neo4j只允许本地主机(localhost)访问,要想通过网络远程访问Neo4j数据库,需要修改监听地址为 0.0.0.0,这样设置之后,就能允许远程主机的访问。
# With default configuration Neo4j only accepts local connections.
# To accept non-local connections, uncomment this line:
dbms.connectors.default_listen_address=0.0.0.0
3、配置.bashrc中的环境变量
java -version命令如果能成功运行,说明JDK是没有问题的
低版本需要添加/jre,高版本没有jre,所以用JAVA_HOME替换
这两块配置环境变量的代码是我在网络上找的,不一定正确
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export JAVA_HOME=/home/simon/programs/jdk-16.0.1
export JRE_HOME=${JAVA_HOME} #低版本需要添加/jre,高版本没有jre,所以用JAVA_HOME替换
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
JRE_HOME=JAVA_HOME/jre #注意 jdk10解压后是没有jre目录的所以这里直接配成JAVA_HOME/jre
4、启动 Neo4j
neo4j-community的bin目录下进入终端输入:
./neo4j console
5、web端进入 http://localhost:7474/
默认用户名“neo4j”和密码“neo4j” ,需要修改密码
bin目录:用于存储Neo4j的可执行程序
conf目录:用于控制Neo4j启动的配置文件
data目录:用于存储核心数据库文件
plugins目录:用于存储Neo4j的插件
核心数据文件存储的位置,默认是在data/graph.db目录中,要改变默认的存储目录,可以更新conf中neo4j.conf文件的配置选项:
# The name of the database to mount
#dbms.active_database=graph.db
补充一些命令:
启动服务,停止服务,重启服务和查询服务的状态:
bin\neo4j start
bin\neo4j stop
bin\neo4j restart
bin\neo4j status
数据导入
neo4j-admin import导入批量数据
1、neo4j中的数据主要分为节点数据和关系数据,csv文件也分为节点文件和关系文件。
当系统要导入csv文件的时候,读取文件的第一行必需是数据域信息,用来表示该文件中各列的具体意思
(1)csv节点文件:必须要包含的是ID域(:ID),用来表示节点的id信息,ID域中的信息必需是全局唯一的,:LABEL是可选项,用来对节点来进行标记,当一个节点有多个标签的时候
id:ID name :LABEL
0 1 <美国奥可斯(香港)国际控股集团> Entity
1 2 <文学作品> Entity
2 3 <文化> Entity
3 4 <寻美中国> Entity
4 5 <品牌> Entity
5 6 <青春是我和你一杯酒的深> Entity
6 7 <网络小说> Entity
7 8 <小说作品> Entity
8 9 <小说> Entity
9 10 <娱乐作品> Entity
(2)csv关系文件:必须要包含的是(:START_ID),(:END_ID),(:TYPE)分别用来表示关系的 开始节点id, 结束节点id, 关系类型。
:START_ID :END_ID :TYPE name
0 1 2 Relation <类型>
1 1 3 Relation <类型>
2 4 5 Relation <类型>
3 6 2 Relation <类型>
4 6 7 Relation <类型>
5 6 8 Relation <类型>
6 6 9 Relation <类型>
7 6 10 Relation <类型>
8 6 11 Relation <类型>
9 6 12 Relation <类型>
csv文件推荐是utf-8编码,否则会造成中文乱码
csv文件默认需要放在import目录下,如需从远程或者其他本地目录导入,则需要修改conf/neo4j.conf配置文件
# load csv时文件路径。默认需要放在${NEO4J_HOME}/import目录下
# 注释后可从任意路径读取文件,也可以指定其他路径。
dbms.directories.import=import
# 是否允许从远程url来load csv。默认不可以
#dbms.security.allow_csv_import_from_file_urls=true
2、将数据导入到数据库中
导入数据的具体命令如下:
neo4j-admin import [--mode=csv] [--database=<name>]
[--additional-config=<config-file-path>]
[--report-file=<filename>]
[--nodes[:Label1:Label2]=<"file1,file2,...">]
[--relationships[:RELATIONSHIP_TYPE]=<"file1,file2,...">]
[--id-type=<STRING|INTEGER|ACTUAL>]
[--input-encoding=<character-set>]
[--ignore-extra-columns[=<true|false>]]
[--ignore-duplicate-nodes[=<true|false>]]
[--ignore-missing-nodes[=<true|false>]]
[--multiline-fields[=<true|false>]]
[--delimiter=<delimiter-character>]
[--array-delimiter=<array-delimiter-character>]
[--quote=<quotation-character>]
[--max-memory=<max-memory-that-importer-can-use>]
[--f=<File containing all arguments to this import>]
[--high-io=<true/false>]
--database=graph.db
表示建立的数据库的名字为graph.db,这里需要注意,graph.db必需为全新的,如果该库已经存在的情况下,会无法导入。
--nodes
表示导入的节点文件,当有多个导入文件的时候,使用,来进行隔开,当如果头文件是单独文件的时候,必需将其放在内容文件的前面,否则会无法导入。
---relationships
表示导入的关系文件,当有多个关系文件导入的时候,使用,来进行隔开,当如果头文件是单独文件的时候,必需将其放在内容文件的前面,否则会无法导入。
--multiline-fields=true
表示如果某属性中的数据内容有多行时,可以成功导入。
在neo4j的文件夹下~/neo4j-community-4.4.10$进入终端输入
./bin/neo4j-admin import --database=graph01.db --nodes=import/node.csv --relationships=import/relation.csv --multiline-fields=true
参考链接:
https://blog.csdn.net/sinat_36226553/article/details/108541370 系列
https://www.cnblogs.com/jpfss/p/10874303.html