Repeat-query API
功能介绍
该接口用于按某些退出条件来循环执行遍历查询。
例如以下gremlin语句:
g.V('a','b').repeat(out('c')).times(2).emit().path() g.V('label_1').repeat(out('label_2')).emit()
URL
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
project_id |
是 |
String |
项目ID。获取方法请参见获取项目ID。 |
graph_name |
是 |
String |
图名称。 |
请求参数

每层traversal的元素个数不超过1亿。
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
executionMode |
否 |
String |
sync:同步async:异步默认为“async ”异步返回。 |
vertices |
是 |
Array of Json |
查询的起始节点ID列表。 |
edges |
否 |
Array of Json |
查询的起始边列表,与vertices二选一,具体格式见表 edges元素格式。 |
repeat |
是 |
Array of Json |
执行repeat的过滤条件列表,数组的每个元素分别对应每一层要做的查询和过滤条件。具体格式见表 repeat元素格式。 |
until |
否 |
Array of Json |
while/do looping模式。用于中止遍历过滤条件列表,数组的每个元素分别对应repeat中每一层要进行终止的条件,且filter类型需要与repeat每层一致,如第一层均为vertex_filter。具体格式见表 until元素格式。 |
times |
否 |
Integer |
用于限制最长步数。默认值为5,最大值为20。 |
query_type |
否 |
String |
可选:['Default',SimpleSubgraph','SimpleEdges',‘Path’]
|
emit |
否 |
Boolean |
是否返回所有元素。默认为true。当前仅支持query_type=Default模式。 |
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
source |
是 |
String |
源节点ID。 |
target |
是 |
String |
目标节点ID。 |
index |
是 |
String |
此边在源节点边集合中的索引。 |
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
operator |
是 |
String |
表示要做的查询类型,可选的值有:inV:入点outV:出点 bothV:入点。 |
vertex_filter |
否 |
Json String |
作用在下一条的点上,具体格式见表 property_filter元素格式。 |
edge_filter |
否 |
Json String |
作用在点到点之间的边,具体格式见表 property_filter元素格式。 |
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
vertex_filter |
否 |
Json String |
在repeat 的operator为“ inV”或“outV”或“bothV”时可选,具体格式见表 property_filter元素格式。 |
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
leftvalue |
否 |
String |
String 左值,具体格式见表 leftvalue元素格式。 |
properties |
是 |
String |
表示过滤类型,支持的操作如下:=:等于!=:不等于<:小于<=:小于等于>:大于>=:大于等于&:与|:或HAS/HASNOT:是否有此属性CONTAIN/NOTCONTAIN:属性值中是否含有右值。 SUBSET:右值是属性值的子集IN/NOTIN:左值与右值是否有交集 PREFIX:右值是左值的前缀FUZZY:模糊匹配REGEX:正则匹配 SUBSTRING:右值是左值的子字符串CISUBSTRING:忽略大小写的子字符串。 |
rightvalue |
是 |
String |
右值,具体格式见表 rightvalue元素格式。 |
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
label_name |
否 |
String |
若过滤“label”,可选“label_name”,值为“labelName”,rightvalue的value字段填具体的label的名称。 |
property_name |
否 |
String |
若过滤“property”,可选“property_name”,值为属性名称,rightvalue的value字段填属性的值。 |
ID |
否 |
String |
若对节点ID做过滤,可选id,值可不填。 |
property_filter |
否 |
String |
若“predicate”为“&”或者“|”,可在“leftvalue”和“rightvalue”中嵌套使用“property_filter”。 |
degree |
否 |
String |
可选["both","in","out"],代表点度数值过滤统计的方向。 |
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
value |
是 |
String |
若过滤“label”,值为label的名称。若过滤“property”,值为属性名称。 |
property_filter |
否 |
String |
若“predicate”为“&”或者“|”,可在“leftvalue”和“rightvalue”中嵌套使用“property_filter”。 |
predicate |
label_name |
id |
property_name |
嵌套filter |
---|---|---|---|---|
& |
否 |
否 |
否 |
是 |
| |
否 |
否 |
否 |
是 |
HAS/HASNOT |
否 |
否 |
是 |
否 |
=/!=/</<=/>/>= |
是 |
是 |
是 |
否 |
响应参数
参数 |
类型 |
说明 |
---|---|---|
errorMessage |
String |
系统提示信息。
|
errorCode |
String |
系统提示信息。
|
data |
Object |
查询结果。查询失败时,字段为空。 |
参数 |
类型 |
说明 |
---|---|---|
source |
String |
源点ID。 |
target |
String |
终点ID。 |
index |
String |
边index。 |
label |
String |
边label。 |
请求示例
POST /ges/v1.0/{project_id}/graphs/{graph_name}/action?action_id=repeat-query { "executionMode": "async", "repeat": [ { "operator": "outV", "vertex_filter": { "property_filter": { "leftvalue": { "label_name": "labelName" }, "predicate": "=", "rightvalue": { "value": "rate" } } } } ], "until": [ { "vertex_filter": { "property_filter": { "leftvalue": { "property_name": "movieid" }, "predicate": "=", "rightvalue": { "value": "1" } } } } ], "emit": false, "vertices": [ "tr_10","tr_11" ] }

以上请求等价于gremlin语句:
g.V('tr_10','tr_11').repeat(out().hasLabel('rate')).until(has('movieid','1')).dedup()
响应示例
状态码: 200
成功响应示例
{ "data":{ "edges":[ { "index":"1", "source":"tr_1", "label":"rate", "properties":{ "Rating":[ 0 ], "Datetime":[ "" ] }, "target":"tr_3" }, { "index":"199998", "source":"tr_1", "label":"rate", "properties":{ "Rating":[ 0 ], "Datetime":[ "" ] }, "target":"tr_200000" } ] } }
状态码: 400
失败响应示例
HttpStatusCode:400 { "errorMessage":"graph [tesdt_117] is not found", "errorCode":"GES.8806" }
状态码
返回值 |
说明 |
---|---|
400 Bad Request |
请求错误。 |
401 Unauthorized |
鉴权失败。 |
403 Forbidden |
没有操作权限。 |
404 Not Found |
找不到资源。 |
500 Internal Server Error |
服务内部错误。 |
503 Service Unavailable |
服务不可用。 |
错误码
请参见错误码。