连接并完成首次查询¶
通过悦数图管理连接悦数图数据库开发版,加载movie示例数据集,再查询一部电影及其参演演员。以下四步均在浏览器中完成。
前提条件¶
- 已按使用 Docker Compose 部署开发版启动悦数图数据库开发版和配套悦数图管理。
- 已准备好当前的
root密码。
1. 登录悦数图管理¶
在运行 Docker 的开发机上,用浏览器打开 http://127.0.0.1:7001。
在其他电脑上访问或使用自定义端口
浏览器通过7001端口访问悦数图管理,悦数图管理通过graph-cluster:9669连接悦数图数据库开发版。
从其他电脑访问时,打开http://<开发机IP>:7001,将<开发机IP>替换为运行 Docker 的机器 IP 地址。
如果修改了compose.yaml中的7001:7001端口映射,将访问地址中的端口改为冒号左侧的开发机端口。
在登录页面确认或填写以下信息,然后单击登录:
| 字段 | 值 |
|---|---|
| 地址 | graph-cluster |
| 端口 | 9669 |
| 用户名 | root |
| 密码 | 当前的root密码。配套文件中的初始密码为YueshuGraph01;如已修改,请填写修改后的密码。 |
登录成功后,顶部导航栏中可见 SCHEMA 管理和控制台。
2. 加载movie示例数据¶
Schema 类似文件夹,用于组织图类型和图。本文使用系统创建的默认 Schema:/default_schema。
- 在顶部导航栏中单击 SCHEMA 管理页签。
- 确认左侧顶部选中的 Schema 为
default_schema。 - 在页面中央单击使用示例数据集。
- 等待加载完成。成功后会打开
movie_type的图类型详情页。
加载会创建图类型movie_type和图movie,并写入电影、演员等点及其关系。movie_type定义数据结构,后续查询使用图movie。
加载成功后,使用示例数据集入口不再显示。再次访问时,直接从第 3 步继续查询,无需重复加载。
3. 查询电影¶
在顶部导航栏中单击控制台。将以下语句粘贴到查询编辑器,并单击运行按钮,查询编号为3的电影:
USE movie MATCH (m@Movie {id: 3}) RETURN m.id AS movie_id, m.name AS movie
预期结果:
| movie_id | movie |
|---|---|
| 3 | "Shadows in Paradise" |
查询各部分的含义:
USE movie指定本次查询访问的图。MATCH查找符合条件的点,@Movie指定电影类型,{id: 3}指定电影编号。按编号可以区分同名电影。RETURN选择要显示的属性,AS为结果列命名。
movie是图名,Movie是点类型名称,名称区分大小写。
为会话设置工作图
本文通过USE movie为每条查询指定图,该设置只对所在查询生效。也可以先为会话设置工作图:
SESSION SET GRAPH movie
然后省略查询开头的USE movie:
MATCH (m@Movie {id: 3}) RETURN m.id AS movie_id, m.name AS movie
重新连接后,需重新设置工作图。更多信息见 USE。
4. 查询参演演员¶
在同一控制台中,将电影查询替换为以下语句并运行,查找这部电影的参演演员:
USE movie MATCH (a@Actor)-[:Act]->(m@Movie {id: 3})
RETURN a.id AS actor_id, a.name AS actor, m.name AS movie
ORDER BY actor_id
预期结果:
| actor_id | actor | movie |
|---|---|---|
| 4826 | "Matti Pellonpää" | "Shadows in Paradise" |
| 4828 | "Sakari Kuosmanen" | "Shadows in Paradise" |
| 5999 | "Kati Outinen" | "Shadows in Paradise" |
(a@Actor)-[:Act]->(m@Movie)匹配演员参演电影的关系,箭头从演员指向电影。ORDER BY actor_id按演员编号排序。
其他连接方式¶
以下客户端访问同一悦数图数据库开发版实例。数据加载一次后,可在任一客户端继续查询。
使用 ngql 连接和加载示例数据
-
在开发机终端中进入
compose.yaml所在目录,执行:docker compose exec ngql ngql --host graph-cluster --port 9669 --user root第一个
ngql是 Compose 服务名,第二个是容器内的客户端命令。graph-cluster:9669是容器网络内的查询地址,保留该值。 -
看到
Password提示后,输入root账号的当前密码并按 Enter。 -
尚未在
/default_schema中加载movie时,执行以下命令;已加载成功时,跳过此步。:play movie开始时显示
Playing dataset: movie...,成功时显示Play dataset: movie done.。加载失败时,按数据加载行为检查已创建的对象和错误信息。
接着,在ngql交互窗口中按查询电影和查询参演演员运行示例。
输入多行查询时,首尾各用一行'''包围语句。输入最后一行并按 Enter 后提交:
'''
USE movie MATCH (a@Actor)-[:Act]->(m@Movie {id: 3})
RETURN a.id AS actor_id, a.name AS actor, m.name AS movie
ORDER BY actor_id
'''
:play movie是ngql客户端命令,不能在悦数图管理或内置网页控制台的查询编辑器中执行。
使用内置网页控制台连接
悦数图数据库控制台是 Graph 服务内置的查询界面,与悦数图管理分别提供访问入口:
| 浏览器所在位置 | 访问地址 |
|---|---|
| 与 Docker 在同一台开发机 | http://127.0.0.1:19669/ui/console |
| 在另一台电脑 | http://<开发机IP>:19669/ui/console |
将<开发机IP>替换为运行 Docker 的机器 IP 地址。配套配置使用 HTTP;修改过19669:19669端口映射时,使用冒号左侧的开发机端口。
在连接窗口中输入用户名root和该账号的当前密码,然后单击 Connect。在编辑器中逐条执行第 3 步和第 4 步的语句,单击运行按钮执行;多行语句直接粘贴。
尚未加载数据时,先通过悦数图管理或ngql加载,再返回此界面查询。
问题排查¶
图管理访问与登录检查
- 网页无法打开:按无法打开 Studio 检查服务状态、端口和日志。
- 网页可打开但无法登录:核对第 1 步中的地址、端口、用户名和实际密码。需要更改已有实例的密码时,按修改已有实例的 root 密码操作。
登录时使用实际密码;compose.yaml中的$$对应实际密码中的单个$。
参数无误时,按检查服务状态确认graphd正在运行。在开发机终端的部署目录中查看 Graph 服务日志,按错误信息排查:
docker compose logs --tail 100 graphd
验证查询连接
需要单独验证连接时,在悦数图管理顶部导航栏中单击控制台,在输入框中粘贴以下语句并单击运行按钮:
RETURN 1 AS result
应返回一列result,值为1。这条语句不依赖示例图数据,可用于检查连接和基本查询是否正常。
查询结果检查
查询报错或结果为空时,先核对图名movie和点类型Movie的大小写,再在同一控制台中逐条执行:
SHOW CURRENT_SCHEMA
结果中path应为/default_schema。如果不是,执行SESSION SET SCHEMA /default_schema切回默认 Schema。
SHOW GRAPH TYPES
结果应列出图类型movie_type。
SHOW GRAPHS
结果应列出图movie,其图类型为movie_type,所属 Schema 为/default_schema。
如果加载曾中断,图名存在也不代表数据完整。先按数据加载行为检查错误和已有对象,再继续查询,避免反复加载造成名称冲突。
下一步¶
- 示例数据集:movie:查看完整数据模型。
- GQL 入门:创建图并完成增删改查:练习创建图、写入、更新和删除数据。
- 应用开发教程:将电影查询接入应用。