1. Neo4j
1.1 安装
下载:wget http://dist.neo4j.org/neo4j-community-3.4.5-unix.tar.gz
解压:tar -axvf neo4j-community-3.4.5-unix.tar.gz
修改配置:
进入解压后的文件夹后: vi 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
# 参考
https://blog.csdn.net/u013946356/article/details/81736232
1.2 启动
-
启动:bin/neo4j start
-
停止:bin/neo4j stop
-
查看状态:bin/neo4j status
-
更多:bin/neo4j
1.3 修改密码
(首次使用必须修改密码)
# 进入cypher
bin/cypher-shell
# 输入初始化用户名和密码
neo4j
neo4j
# 修改密码
CALL dbms.changePassword('你的新密码');
# 退出
:exit;
Python操作Neo4j
from py2neo import Graph,Node,Relationship
# py2neo==3.1.2
# python3.6
# neo4j3.4.5
# connect
graph = Graph(
"http://localhost:7474",
username="neo4j",
password="nopassword"
)
# create
a = Node('PersonTest', name='张三')
b = Node('PersonTest', name='李四')
r = Relationship(a, 'KNOWNS', b)
s = a | b | r
graph.create(s)
# 用find()方法进行node查找,需要遍历输出,类似于mongodb
data3 = graph.find(label='PersonTest')
for data in data3:
print (data)
# (`张三`:PersonTest {name:"张三"})
# (`李四`:PersonTest {name:"李四"})
Java 操作Neo4j(Maven)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.test</groupId>
<artifactId>mavenQs</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>mavenQs</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- Java 服务器访问 -->
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver</artifactId>
<version>1.6.2</version>
</dependency>
<!-- <dependency>
嵌入式开发需要的jar包
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>3.3.4</version>
</dependency> -->
<!-- 日志组件 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<!--万能的lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<optional>true</optional>
</dependency>
</dependencies>
<repositories>
<repository>
<id>neo4j</id>
<url>http://m2.neo4j.org/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<!--不加的话maven无法加载主类到jar,存疑-->
<build>
<plugins>
<!--添加maven插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--添加自己的启动类路径!-->
<configuration>
<mainClass>org.test.neo.App</mainClass>
</configuration>
<executions>
<execution>
<goals>
<!--可以把依赖的包都打包到生成的Jar包中-->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
package org.test.neo;
// import org.neo4j.cypher.internal.javacompat.ExecutionEngine;
// import org.neo4j.graphdb.*;
// import org.neo4j.graphdb.factory.*;
import org.neo4j.driver.v1.*;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.neo4j.driver.v1.Values.parameters;
// import org.neo4j.graphdb.Transaction;
// import org.neo4j.driver.v1.Transaction;
/**
* Hello world!
*
*/
@Slf4j
public class App
{
public static void main(String[] args) {
Driver driver = GraphDatabase.driver( "bolt://localhost:7687", AuthTokens.basic( "neo4j", "nopassword" ) );
Session session = driver.session();
StatementResult result = session.run( "MATCH (a:PersonTest) WHERE a.name = {name} " +
"RETURN a.name AS name",
parameters( "name", "张三" ) );
while ( result.hasNext() )
{
Record record = result.next();
log.info(" " + record.get( "name" ).asString());
}
session.close();
driver.close();
}
}