赞
踩
# STEP 1
docker pull neo4j
# STEP 2
sudo docker run --name neo4j --detach --publish=7474:7474 \
--restart=always \
--privileged=true \
--publish=7687:7687 \
--volume=/home/daiyizheng/docker/neo4j/data:/data \
--volume=$PWD/neo4j/logs:/logs \
--volume=$PWD/neo4j/conf:/conf \
--volume=$PWD/neo4j/import:/import \
--env=NEO4J_dbms_memory_pagecache_size=8G \
--env=NEO4J_dbms_memory_heap_initial__size=4G \
--env=NEO4J_dbms_memory_heap_max__size=8G neo4j
docker-compose.yml
version: '3' services: neo4j: image: neo4j:3.5.8 container_name: neo4j privileged: true restart: always environment: - NEO4J_dbms_memory_heap_maxSize=8G - NEO4J_dbms_memory_heap_initial__size=4G - NEO4J_dbms_memory_pagecache_size=8G - NEO4J_AUTH=neo4j/123456 #修改默认用户密码 - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes - NEO4J_dbms_security_procedures_unrestricted=apoc.* - NEO4J_apoc_import_file_enabled=true - NEO4J_dbms_shell_enabled=true - NEO4J_dbms_connector_http_listen__address=:7474 - NEO4J_dbms_connector_https_listen__address=:6477 - NEO4J_dbms_connector_bolt_listen__address=:7687 ports: - "7474:7474" - "7687:7687" volumes: - "./data:/var/lib/neo4j/data" - "./logs:/var/lib/neo4j/logs" - "./import:/var/lib/neo4j/import" - "./plugins:/var/lib/neo4j/plugins" - "./conf:/var/lib/neo4j/conf"
docker-compose up
要求
curl -O http://dist.neo4j.org/neo4j-community-3.4.5-unix.tar.gz
解压安装
tar -axvf neo4j-community-3.4.5-unix.tar.gz
修改配置
在安装目录下找到conf目录下的neo4j.conf文件
修改相应配置如下:
# 修改第22行load csv时l路径,在前面加个#,可从任意路径读取文件 #dbms.directories.import=import # 修改35行和36行,设置JVM初始堆内存和JVM最大堆内存 # 生产环境给的JVM最大堆内存越大越好,但是要小于机器的物理内存 dbms.memory.heap.initial_size=5g dbms.memory.heap.max_size=10g # 修改46行,可以认为这个是缓存,如果机器配置高,这个越大越好 dbms.memory.pagecache.size=10g # 修改54行,去掉改行的#,可以远程通过ip访问neo4j数据库 dbms.connectors.default_listen_address=0.0.0.0 # 默认 bolt端口是7687,http端口是7474,https关口是7473,不修改下面3项也可以 # 修改71行,去掉#,设置http端口为7687,端口可以自定义,只要不和其他端口冲突就行 #dbms.connector.bolt.listen_address=:7687 # 修改75行,去掉#,设置http端口为7474,端口可以自定义,只要不和其他端口冲突就行 dbms.connector.http.listen_address=:7474 # 修改79行,去掉#,设置http端口为7473,端口可以自定义,只要不和其他端口冲突就行 dbms.connector.https.listen_address=:7473 # 修改227行,去掉#,允许从远程url来load csv dbms.security.allow_csv_import_from_file_urls=true # 修改246行,允许使用neo4j-shell,类似于mysql 命令行之类的 dbms.shell.enabled=true # 修改235行,去掉#,设置连接neo4j-shell的端口,一般都是localhost或者127.0.0.1,这样安全,其他地址的话,一般使用https就行 dbms.shell.host=127.0.0.1 # 修改250行,去掉#,设置neo4j-shell端口,端口可以自定义,只要不和其他端口冲突就行 dbms.shell.port=1337 # 修改254行,设置neo4j可读可写 dbms.read_only=false
启动
# 把Neo4j安装为系统服务,之后自动运行即可。 neo4j install-service #在windows neo4j uninstall-service #在windows # 在linux # .用编辑器打开开机启动脚本文件 vi /etc/rc.d/rc.local # 2.添加Neo4j 启动命令 # 在文件最后添加如下命令行: /usr/share/neo4j/bin/neo4j start # 其中/usr/share/neo4j/bin/是安装Neo4j的路径 进入bin目录执行./neo4j start 进入bin目录执行./neo4j stop 查看图数据库状态 进入bin目录执行./neo4j status
客户端访问
http://服务器ip地址:7474/browser/
在浏览器访问图数据库所在的机器上的7474端口(第一次访问账号neo4j,密码neo4j,会提示修改初始密码)
访问Neo4j验证失败(The client is unauthorized due to authentication failure.)
大概意思就是说服务器验证失败。
如果你有在浏览器上登录不同的neo4j数据库,很可能是由于缓存没有清理掉导致的。
可以试试无痕浏览来访问neo4j的web页面。
另外有还有两种解决方案:
dbms.security.auth_enabled=false
# neo4j数据进行备份、还原、迁移的操作时,首先要关闭neo4j;
cd /usr/share/neo4j/bin
neo4j stop
## Neo4j not running
出现这种情况, Neo4j没有运行, 但是浏览器仍然可以访问neo4j数据库的情况, 直接执行导入数据后,是无法看到导入的数据库,
其实这种情况下Neo4j仍在运行(否则浏览器是无法然访问的),
这就需要强制杀死Neo4j进程,则执行命令
ps -ef|grep neo4j
kill -9 <对应的pid>
关闭Neo4j后, 再次用浏览器访问Neo4j,是无法访问的,说明Neo4j是关闭运行了,在此情况下,是可以执行Neo4j的数据导出与导入的.
## 执行数据导出命令
./neo4j-admin dump --database=graph.db --to=/home/robot/Neoj_data/graph.db.dump
##执行数据导入命令
neo4j-admin load --database=shield.db --from=D:\neo4j\neo4j-community-4.4.18\import\import-file.db.dump --force
## 开启
neo4j start
Neo4j默认是从安装目录下的import文件夹导入文件的。所以先把自己要导入的数据文件放进该文件夹中。
结点的导入
要导入的结点文件如下,第一行为数据项名:
在Neo4j的命令行中输入以下命令并执行:
# node节点
LOAD CSV WITH HEADERS FROM "file:///tags.csv" AS line
MERGE (p:tag{id:line.id,name:line.name,p:line.p,w:line.w})
## 查询所有节点:
start n=node(*) return n
具体的参数说明可以见下图:
关系的导入
要导入的关系文件如下,第一行为数据项名:
在Neo4j的命令行中输入以下命令并执行:
LOAD CSV WITH HEADERS FROM "file:///muls.csv" AS line
match (from:tag{id:line.from_id}),(to:tag{id:line.to_id})
merge (from)-[r:mul{mul:line.mul}]->(to)
参数说明:
使用条件
参数
将现有的数据删除
movies.csv.
----------------------------------------------------
movie:ID name :LABEL
tt0133093 The Matrix movie
tt0234215 The Matrix Reloaded movie
tt0242653 The Matrix Revolutions movie
actors.csv
-----------------------------------------------------
person:ID name :LABEL
keanu Keanu Reeves person
laurence Laurence Fishburne person
carrieanne Carrie-Anne Moss person
roles.csv
------------------------------------------------------
:START_ID role :END_ID
keanu Neo tt0133093
keanu Neo tt0234215
keanu Neo tt0242653
laurence Morpheus tt0133093
laurence Morpheus tt0234215
laurence Morpheus tt0242653
carrieanne Trinity tt0133093
终端输入导入命令
neo4j-import --into ../data/databases/graph.db --nodes actors.csv --nodes movie.csv --relationships:ACTED_IN roles.csv --skip-duplicate-nodes=true --skip-bad-relationships=true --stacktrace --bad-tolerance=500000
启动数据库,查看数据
其他命令参考
./neo4j-admin import --database=pkubase.db --nodes "/home/daiyizheng/文档/NLP-NER-projet/CCKS -2020-ckbqa/data/pre-data/node.csv" --relationships "/home/daiyizheng/文档/NLP-NER-projet/CCKS -2020-ckbqa/data/pre-data/relation.csv" --ignore-extra-columns=true --ignore-missing-nodes=true --ignore-duplicate-nodes=true
或者
./bin/neo4j-import --into data/databases/graph_kg_merge_id.db --nodes:Persons data/csv_kg_merge_id/persons.csv --nodes:Industry data/csv_kg_merge_id/industry.csv --relationships:Director data/csv_kg_merge_id/director.csv --multiline-fields=true
注意: 目前比较常用的批量导入数据的方法有两种,新版本提供的neo4j-import和旧版本升级的neo4j-admin import,之间有些许的不同,但在导入数据的效率上没有太多的不同。
neo4j-admin参数
usage: neo4j-admin import [--mode=csv] [--database=<name>] //模式,默认csv
[--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>]] // 忽略丢失的节点参数
或者
bin/neo4j-import [--into]
[--id-type=<STRING|INTEGER|ACTUAL>]
[--nodes[:Label1:Label2]=<"file1,file2,...">] //实体文件
[--relationships[:RELATIONSHIP_TYPE]=<"file1,file2,...">] // 关系文件
# Neo4j configuration
#
# For more details and a complete list of settings, please see
# https://neo4j.com/docs/operations-manual/current/reference/configuration-settings/
#*****************************************************************
# The name of the database to mount
#dbms.active_database=graph.db
//软连接
cd ./data/databases/
ln -s graph_kg.db graph.db
//重启neo4j
cd $NEO4j_HOME/bin
./neo4j restart
// 删除软连接
ln-s test_chk test_chk_ln
rm -rf ./test_chk_ln
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。