- 最新动态
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 如何使用图引擎服务
- 准备工作
- 权限管理
- 元数据操作
- 创建图
- 管理图
- 数据迁移
- 访问图和分析图
- 查看图任务
- 配置图操作权限
- 运维监控
- 套餐包管理
-
算法参考
- 算法一览表
- PageRank算法
- PersonalRank算法
- k核算法(k-core)
- k跳算法(k-hop)
- 最短路径算法(Shortest Path)
- 全最短路算法(All Shortest Paths)
- 带一般过滤条件最短路径(Filtered Shortest Path)
- 单源最短路算法(SSSP)
- 点集最短路(Shortest Path of Vertex Sets)
- 关联路径算法(n-Paths)
- 紧密中心度算法(Closeness Centrality)
- 标签传播算法(Label Propagation)
- Louvain算法
- 关联预测算法(Link Prediction)
- Node2vec算法
- 实时推荐算法(Real-time Recommendation)
- 共同邻居算法(Common Neighbors)
- 连通分量算法(Connected Component)
- 度数关联度算法(Degree Correlation)
- 三角计数算法(Triangle Count)
- 聚类系数算法(Cluster Coefficient)
- 中介中心度算法(Betweenness Centrality)
- 边中介中心度(Edge-betweenness Centrality)
- OD中介中心度(OD-betweenness Centrality)
- 单点环路检测(Single Vertex Circles Detection)
- 点集共同邻居(Common Neighbors of Vertex Sets)
- 点集全最短路(All Shortest Paths of Vertex Sets)
- 带一般过滤条件环路检测(filtered circle detection)
- 子图匹配(Subgraph Matching)
- 带过滤全对最短路径(Filtered All Pairs Shortest Paths)
- 带过滤全最短路径(Filtered All Shortest Paths)
- TopicRank算法
- 带过滤的n_paths算法(filtered_n_paths)
- 时序路径分析(Temporal Paths)
- 开发指南
-
API参考
- 使用前必读
- API概览
- 如何调用API
- 管理面API(V2)
-
业务面API
-
内存版
- 点操作API
- 边操作API
- 元数据操作API
- 索引操作API
- Gremlin操作API
-
算法API
- 执行算法(1.0.0)
-
算法API参数参考
- 算法公共参数
- pagerank算法(1.0.0)
- personalrank算法(1.0.0)
- k核算法(kcore)(1.0.0)
- k跳算法(k_hop)(1.0.0)
- 共同邻居(common_neighbors)(1.0.0)
- 点集共同邻居(common_neighbors_of_vertex_sets)(2.2.13)
- 关联预测(link_prediction)(1.0.0)
- 最短路径(shortest_path)(2.1.5)
- 全最短路(all_shortest_paths)(1.0.12)
- 带一般过滤条件最短路径(filtered_shortest_path)(2.2.4)
- 单源最短路(sssp)(1.0.0)
- 点集最短路(shortest_path_of_vertex_sets)(2.1.5)
- 关联路径(n_paths)(1.1.2)
- 带过滤的n_paths算法(filtered_n_paths)(2.2.22)
- 带过滤全对最短路径(filtered_all_pairs_shortest_paths)(2.2.17)
- 点集全最短路(all_shortest_paths_of_vertex_sets)(2.2.15)
- 带过滤全最短路径(filtered_all_shortest_paths)(2.2.17)
- 连通分量(connected_component)(1.0.0)
- 标签传播(label_propagation)(2.1.8)
- louvain算法(louvain)(2.2.1)
- node2vec算法(node2vec)(1.0.5)
- 实时推荐(realtime_recommendation)(2.2.21)
- 度数关联度(degree_correlation)(1.0.0)
- 三角计数(triangle_count)(1.0.0)
- 聚类系数(cluster_coefficient)(1.0.0)
- 紧密中心度(closeness)(1.0.0)
- 中介中心度算法(betweenness)(2.2.4)
- 边中介中心度(edge_betweenness)(2.2.4)
- OD中介中心度(od_betweenness)(2.2.4)
- 单点环路检测(single_vertex_circles_detection)(2.2.4)
- 带一般过滤条件环路检测(filtered_circle_detection)(2.2.15)
- 子图匹配(subgraph_matching)(2.2.16)
- topicrank算法(topicrank)(2.2.20)
- 动态图分析API
- 路径API
- 图统计API
- 图操作API
- 子图操作API
- Job管理API
- 自定义操作API
- Cypher操作API(2.2.16)
- Filtered-query API(2.2.13)
- Filtered-query V2(2.3.6)
- DSL查询API(2.3.14)
- 通过导入文件更新点边的指定属性(2.2.13)
- 通过读取文件删除点边(2.2.15)
- 运维监控API
-
持久化版
- 持久化版规格说明
- 点操作API
- 边操作API
- 元数据操作API
- 索引操作API
- HyG图管理API
-
HyG算法API
- 执行算法
-
算法API参数参考
- 算法公共参数
- pagerank算法
- personalrank算法(personalrank)
- k核算法(kcore)
- k跳算法(k_hop)
- 点集共同邻居(common_neighbors_of_vertex_sets)
- 最短路径(shortest_path)
- 全最短路(all_shortest_paths)
- 全对最短路径(all_pairs_shortest_paths)
- 单源最短路算法(sssp)
- 点集最短路(shortest_path_of_vertex_sets)
- 点集全最短路(all_shortest_paths_of_vertex_sets)
- 连通分量(connected_component)
- 三角计数算法(triangle_count)
- 紧密中心度算法(closeness)
- 中介中心度算法(betweenness)
- 边中介中心度(edge_betweenness)
- OD中介中心度(od_betweenness)
- 单点环路检测(single_vertex_circles_detection)
- topicrank算法(topicrank)
- louvain算法(louvain)
- Bigclam算法(bigclam)
- Cesna算法(cesna)
- infomap算法(infomap)
- 标签传播算法(label_propagation)
- 子图匹配算法(subgraph matching)
- 关联预测算法(link_prediction)
- n_paths算法(n_paths)
- 聚类系数算法(cluster_coefficient)
- 算法结果TXT格式说明
- 执行DSL算法
- DSL语法说明
- HyG Job管理API
- 原生算法API
- 图统计API
- 图操作API
- Job管理API
- Cypher操作API
- 交互式事务API
- 运维监控API
-
内存版
- 应用示例
- 权限策略和授权项
- 云监控服务监控指标说明
- 历史API
- 附录
- 常见问题
- 视频帮助
- 文档下载
- 通用参考
展开导读
链接复制成功!
基本操作和兼容性
基本操作
操作名 |
Cypher语句 |
---|---|
查点 |
match (n) return n |
查边 |
match (n)-[r]->(m) return n, r, m |
查路径 |
match (n:user)-[r]->(m:movie)-->(s:series) return n,r,m,s |
过滤查询 |
match(n:user) where n.userid>=5 return n |
分组聚集 |
match(n:movie) return n.genres, count(*) |
去重 |
match(n:movie) return distinct n.genres |
排序 |
match(n:movie) return n order by n.movieid |
创建点 |
create (n:user{userid:1}) return n |
创建边 |
match (n:user{userid:15}),(m:movie{movieid:10}) create (n)-[r:rate]->(m) |
删除点 |
match (n:user{userid:1}) delete n |
更改标签 |
match (n:user{userid:1}) set n:movie return n |
更改属性 |
match (n:user{userid:1}) set n.userid=2 return n |
Cypher实现的兼容性
- Cypher支持的子句列表
Cypher实现了若干子句,通过对子句进行组合可以实现丰富的查询语义,进而完成点边过滤、多跳查询、排序去重、分组聚集等诸多能力。
目前GES支持的Cypher子句如下:
表1 Cypher支持的子句清单 子句
支持情况
举例
match
部分支持
match (n:movie) return n
optional match
部分支持
optional match (n)-->(m) where id(n)='1' return m
return
支持
return [1,2,3] as p
with
支持
match (n) with labels(n) as label, count(*) as count
where count > 10 return *
where
支持
match (n:movie) where n.movieid > 10 return n
order by
支持
match (n:movie) return n order by n.genres
skip
支持
match (n:movie) return n order by n.genres skip 5
limit
支持
match (n:movie) return n order by n.genres skip 5 limit 10
create
支持
create (n:user{_ID_: 'Jack' }) return n
delete
支持
match (n:movie)<-[r]-(m:user) delete r
set
支持
match (n:user{userid:0}) set n.gender='M' return n
call procedures
支持
call db.schema()
unwind
支持
unwind [1, 2, 3] as p return p
union
支持
match (n:movie) return id(n) union match (n:user) return id(n)
说明:
union仅在百亿以下规格图中支持(不包含百亿)。
说明:
- 目前暂不支持merge、foreach等操作,暂不支持使用Cypher语句增删索引。
- 由于GES的元数据不是Schema Free的,点边label属性等有严格的限制,因此不支持Remove操作。
- Order by子句不支持List类型的排序,当属性值的Cardinality不为single时,排序结果未知。
- match子句支持情况
特性
描述
子句示例
最低版本要求
点Pattern
支持基于label/属性过滤、id过滤的点pattern
match (n:movie{title:'hello'})
match (n) where id(n)='xx'
2.2.16
边Pattern
支持有方向、无方向、带label/属性过滤的边pattern,支持指定两端id进行边查询
match (n)-[r] -> (m)
match (n)-[r]- (m)
match (n)-[r:rate{Rating:1}] - (m)
match (n)-[r]- (m) where id(n)='x'and id(m)='y'
2.2.16
路径
支持匿名路径
match (n)-[r]->(m)-->(s)
2.2.16
支持命名路径
match p=(n)-[r]->(m)-->(s)
2.2.19
多Pattern
支持match后输入多个pattern,以逗号隔开:
match (n)-[r]->(m), (m)-->(s)
2.2.16
多Match
支持输入多个match子句,多个match间可以使用with连接:
match (n)-[r]->(m) with m match (m)-->(s)
2.2.16
可变长路径Pattern
支持从单点出发查询可变长路径:
match p=(n)-[r*1..3]->(m) where id(n)='xx'return p
match p=(n{title:'name'})-[r*1..3]->(m) return p
2.2.19
支持可变长路径查询时指定遍历条件:
match p=(n)-[r*1..3]->(m) where id(n)='xx'and all (x in nodes(p) where x.prop='value1') return p
2.2.28
支持同时指定可变长路径起点和终点:
match p=(n)-[r*1..3]->(m) where id(n)='xx' and id(m)='y' return p
2.3.9
不支持根据终点去重:
match p=(n)-[r*1..3]->(m) where id(n)='xx' and id(m)='yy'return distinct m
暂不支持
- 参数化查询支持
Cypher支持参数化的查询。通过把查询语句中的数值、字符串等值类型提取为参数,加速查询的编译时间,提高查询速度。
以下提供几种参数化查询的示例:
- 参数化查询请求示例1:
POST http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/action?action_id=execute-cypher-query { "statements": [{ "statement": " match (n:user) where n.occupation = $occupation return n", "parameters": { "occupation" : "artist" }, "resultDataContents": ["row"] }] }
- 参数化查询请求示例2:
POST http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/action?action_id=execute-cypher-query { "statements": [{ "statement": " match (n:user {`Zip-code`:'98133'}) set n = $props return n", "parameters": { "props": { "gender": "M", "age": "56+" } }, "resultDataContents": ["row"] }] }
说明:
参数化查询不适用于以下场景,下列查询语句均无法正常执行:
- 属性键值,如:match (n) where n.$param = 'something'
- 点边标签,如:match (n:user) set n:$code
- 参数化查询请求示例1:
- 数据类型支持
GES目前支持char、char_array、float、double、Boolean、long、Integer、date、enum、string共10种数据类型,布尔型和数值型在Cypher语法中都能得到支持,其他类型和Cypher存在如下的映射关系,在GES内部实现了类型的转换:
表2 GES和Cypher的类型映射关系 GES类型
Cypher类型
备注
char
String
-
char_array
String
-
string
String
-
date
Temporal
目前支持Date按GES的日期格式输入和输出,暂不支持调用Cypher日期函数输入日期。
- 点id的兼容性
- Cypher添加点时不提供设置id的语法,GES中添加点需要一个字符串型的id,来唯一的标识一个点。为了兼容Cypher语法,当前Create语句实现中,通过使用一个特殊的标识符_ID_指定点的id。例如create (n{_ID_:'123456'} )语句,会创建一个id为123456的点。
- 若创建时未指明id,则系统为此点生成一个随机id。
说明:
标识符“_ID_”仅在create语句中支持,match、set等子句均不支持_ID_标识。Match子句中可使用函数id()获取点id。
- 创建多标签点
GES持久化版本支持通过Cypher创建多标签的点,例如create (n:user:student {userid:10, studentName:’Bob’})
所有标签的属性放在同一个大括号中。创建过程中会根据schema自动将标签与属性匹配,属性的顺序不会影响其与标签的对应关系。