Neo4j installation and basic use

1. Neo4j

1.1 Installation

Download: wget http://dist.neo4j.org/neo4j-community-3.4.5-unix.tar.gz

Unzip: tar -axvf neo4j-community-3.4.5-unix.tar.gz

Change setting:

进入解压后的文件夹后: 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 Start

  • Start: bin/neo4j start

  • Stop: bin/neo4j stop

  • View status: bin/neo4j status

  • More: bin/neo4j

1.3 Change password

(The password must be changed for the first use)

# 进入cypher
bin/cypher-shell

# 输入初始化用户名和密码
neo4j
neo4j

# 修改密码
CALL dbms.changePassword('你的新密码');

# 退出
:exit;

Python operation 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 operation 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();
    }
}

Guess you like

Origin blog.csdn.net/MaoziYa/article/details/114195824