大数据学习栈记——Neo4j的安装与使用

发布于:2025-06-12 ⋅ 阅读:(19) ⋅ 点赞:(0)

本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。

Apt安装

Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics

我这里安装是添加软件源的方法

最新版本

wget -O - https://debian.neo4j.com/neotechnology.gpg.key | sudo apt-key add –

echo 'deb https://debian.neo4j.com stable latest' | sudo tee /etc/apt/sources.list.d/neo4j.list

sudo apt-get update

sudo apt install neo4j #默认安装最新版

配置Neofj

随后,配置可以远程访问

sudo vim /etc/neo4j/neo4j.conf

在文中添加

server.logs.config=/etc/neo4j/server-logs.xml

server.logs.user.config=/etc/neo4j/user-logs.xml

server.default_listen_address=0.0.0.0

随后配置开机自启动

systemctl start neo4j.service

systemctl status neo4j.service

启动成功

Neo4j编程

Neo4j使用节点(Node)和关系(Relationship)来存储和表示数据。本文档将通过一个综合的电影知识图谱示例,展示如何在Neo4j中创建复杂的图模型并生成可视化效果。

创建节点

创建电影节点

// 创建经典电影节点

CREATE (matrix:Movie {

  title: "The Matrix",

  released: 1999,

  genre: ["Action", "Sci-Fi"],

  rating: 8.7,

  budget: 63000000,

  boxOffice: 467000000

})

CREATE (godfather:Movie {

  title: "The Godfather",

  released: 1972,

  genre: ["Crime", "Drama"],

  rating: 9.2,

  budget: 6000000,

  boxOffice: 287000000

})

CREATE (inception:Movie {

  title: "Inception",

  released: 2010,

  genre: ["Action", "Sci-Fi", "Thriller"],

  rating: 8.8,

  budget: 160000000,

  boxOffice: 836000000

})

CREATE (avatar:Movie {

  title: "Avatar",

  released: 2009,

  genre: ["Action", "Adventure", "Sci-Fi"],

  rating: 7.8,

  budget: 237000000,

  boxOffice: 2923000000

})

创建演员结点

// 创建演员节点

CREATE (keanu:Actor {

  name: "Keanu Reeves",

  born: 1964,

  nationality: "Canadian",

  awards: ["Saturn Award", "MTV Movie Award"]

})

CREATE (laurence:Actor {

  name: "Laurence Fishburne",

  born: 1961,

  nationality: "American",

  awards: ["Emmy Award", "Tony Award"]

})

CREATE (brando:Actor {

  name: "Marlon Brando",

  born: 1924,

  nationality: "American",

  awards: ["Academy Award", "Golden Globe"]

})

CREATE (dicaprio:Actor {

  name: "Leonardo DiCaprio",

  born: 1974,

  nationality: "American",

  awards: ["Academy Award", "Golden Globe", "BAFTA"]

})

CREATE (cameron_diaz:Actor {

  name: "Cameron Diaz",

  born: 1972,

  nationality: "American",

  awards: ["Golden Globe Nomination"]

})

创建导演节点

// 创建导演节点

CREATE (wachowski:Director {

  name: "The Wachowskis",

  activeYears: "1996-present",

  nationality: "American",

  knownFor: ["Sci-Fi", "Action"]

})

CREATE (coppola:Director {

  name: "Francis Ford Coppola",

  born: 1939,

  nationality: "American",

  awards: ["Academy Award", "Palme d'Or"],

  knownFor: ["Drama", "Crime"]

})

CREATE (nolan:Director {

  name: "Christopher Nolan",

  born: 1970,

  nationality: "British",

  awards: ["Academy Award", "BAFTA"],

  knownFor: ["Thriller", "Sci-Fi"]

})

CREATE (cameron:Director {

  name: "James Cameron",

  born: 1954,

  nationality: "Canadian",

  awards: ["Academy Award", "Golden Globe"],

  knownFor: ["Sci-Fi", "Action", "Adventure"]

})

创建制片公司节点

// 创建制片公司节点

CREATE (warner:Studio {

  name: "Warner Bros.",

  founded: 1923,

  headquarters: "Burbank, California",

  revenue: 15000000000

})

CREATE (paramount:Studio {

  name: "Paramount Pictures",

  founded: 1912,

  headquarters: "Hollywood, California",

  revenue: 3800000000

})

CREATE (fox:Studio {

  name: "20th Century Fox",

  founded: 1935,

  headquarters: "Los Angeles, California",

  revenue: 9000000000

})

创建用户节点

// 创建用户节点

CREATE (alice:User {

  name: "Alice Johnson",

  age: 28,

  location: "New York",

  favoriteGenre: ["Sci-Fi", "Action"]

})

CREATE (bob:User {

  name: "Bob Smith",

  age: 35,

  location: "Los Angeles",

  favoriteGenre: ["Drama", "Crime"]

})

CREATE (carol:User {

  name: "Carol Williams",

  age: 42,

  location: "Chicago",

  favoriteGenre: ["Thriller", "Adventure"]

})

创建关系

演员-电影关系

匹配已存在的节点并创建关系

MATCH (keanu:Actor {name: "Keanu Reeves"})

MATCH (matrix:Movie {title: "The Matrix"})

CREATE (keanu)-[:ACTED_IN {role: "Neo", screenTime: 90}]->(matrix)

MATCH (laurence:Actor {name: "Laurence Fishburne"})

MATCH (matrix:Movie {title: "The Matrix"})

CREATE (laurence)-[:ACTED_IN {role: "Morpheus", screenTime: 65}]->(matrix)

MATCH (brando:Actor {name: "Marlon Brando"})

MATCH (godfather:Movie {title: "The Godfather"})

CREATE (brando)-[:ACTED_IN {role: "Vito Corleone", screenTime: 85}]->(godfather)

MATCH (dicaprio:Actor {name: "Leonardo DiCaprio"})

MATCH (inception:Movie {title: "Inception"})

CREATE (dicaprio)-[:ACTED_IN {role: "Dom Cobb", screenTime: 120}]->(inception)

MATCH (cameron_diaz:Actor {name: "Cameron Diaz"})

MATCH (avatar:Movie {title: "Avatar"})

CREATE (cameron_diaz)-[:ACTED_IN {role: "Dr. Grace Augustine", screenTime: 45}]->(avatar)

导演-电影关系

MATCH (wachowski:Director {name: "The Wachowskis"})

MATCH (matrix:Movie {title: "The Matrix"})

CREATE (wachowski)-[:DIRECTED {year: 1999, budget: 63000000}]->(matrix)

MATCH (coppola:Director {name: "Francis Ford Coppola"})

MATCH (godfather:Movie {title: "The Godfather"})

CREATE (coppola)-[:DIRECTED {year: 1972, budget: 6000000}]->(godfather)

MATCH (nolan:Director {name: "Christopher Nolan"})

MATCH (inception:Movie {title: "Inception"})

CREATE (nolan)-[:DIRECTED {year: 2010, budget: 160000000}]->(inception)

MATCH (cameron:Director {name: "James Cameron"})

MATCH (avatar:Movie {title: "Avatar"})

CREATE (cameron)-[:DIRECTED {year: 2009, budget: 237000000}]->(avatar)

制片公司-电影关系

MATCH (warner:Studio {name: "Warner Bros."})

MATCH (matrix:Movie {title: "The Matrix"})

CREATE (warner)-[:PRODUCED {investment: 63000000, profit: 404000000}]->(matrix)

MATCH (paramount:Studio {name: "Paramount Pictures"})

MATCH (godfather:Movie {title: "The Godfather"})

CREATE (paramount)-[:PRODUCED {investment: 6000000, profit: 281000000}]->(godfather)

MATCH (warner:Studio {name: "Warner Bros."})

MATCH (inception:Movie {title: "Inception"})

CREATE (warner)-[:PRODUCED {investment: 160000000, profit: 676000000}]->(inception)

MATCH (fox:Studio {name: "20th Century Fox"})

MATCH (avatar:Movie {title: "Avatar"})

CREATE (fox)-[:PRODUCED {investment: 237000000, profit: 2686000000}]->(avatar)

用户评分关系

MATCH (alice:User {name: "Alice Johnson"})

MATCH (matrix:Movie {title: "The Matrix"})

CREATE (alice)-[:RATED {score: 9.5, timestamp: datetime("2024-01-15T14:30:00")}]->(matrix)

MATCH (alice:User {name: "Alice Johnson"})

MATCH (inception:Movie {title: "Inception"})

CREATE (alice)-[:RATED {score: 9.0, timestamp: datetime("2024-02-10T19:45:00")}]->(inception)

MATCH (bob:User {name: "Bob Smith"})

MATCH (godfather:Movie {title: "The Godfather"})

CREATE (bob)-[:RATED {score: 10.0, timestamp: datetime("2024-01-20T21:15:00")}]->(godfather)

MATCH (carol:User {name: "Carol Williams"})

MATCH (avatar:Movie {title: "Avatar"})

CREATE (carol)-[:RATED {score: 8.5, timestamp: datetime("2024-03-05T16:20:00")}]->(avatar)

MATCH (carol:User {name: "Carol Williams"})

MATCH (inception:Movie {title: "Inception"})

CREATE (carol)-[:RATED {score: 9.2, timestamp: datetime("2024-02-28T20:10:00")}]->(inception)

演员间合作关系

MATCH (keanu:Actor {name: "Keanu Reeves"})

MATCH (laurence:Actor {name: "Laurence Fishburne"})

CREATE (keanu)-[:COLLABORATED_WITH {movie: "The Matrix", year: 1999}]->(laurence)

可视化

Neo4j Browser中生成完整的图可视化:

MATCH (n)-[r]->(m)

RETURN n, r, m

LIMIT 100

电影生态系统可视化

MATCH path = (n)-[*1..2]-(movie:Movie {title: "The Matrix"}) RETURN path

演员关系网络

// 显示演员之间的协作网络

MATCH (actor1:Actor)-[:ACTED_IN]->(movie:Movie)<-[:ACTED_IN]-(actor2:Actor)

WHERE actor1 <> actor2

RETURN actor1, movie, actor2