Filtered-query API(2.2.13)
功能介绍
对k跳过程进行逐层过滤,列出满足过滤条件的第k跳节点或边。
URI
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
project_id |
是 |
String |
项目ID。获取方法请参见获取项目ID。 |
graph_name |
是 |
String |
图名称。 |
请求参数
当executionMode为同步时,返回的点个数不能超过10万。
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
executionMode |
否 |
String |
|
vertices |
是 |
Array of Json |
查询的起始节点ID列表。 |
query_type |
否 |
String |
可选:['Default',AllVertices','SimpleEdges',‘Path’]
|
by |
否 |
Array of Json |
用于控制输出字段,当query_type为Default或AllVertices时有效。当前仅支持一层。当字段不存在时,默认为输出所有内容。 |
edges |
否 |
Array of Json |
查询的起始边列表,与vertices二选一,具体格式见表3。 |
filters |
是 |
Array of Json |
过滤条件列表,数组的每个元素分别对应每一层要做的查询和过滤条件。具体格式见表4。 |
full_path |
否 |
Boolean |
返回的路径信息是否是完整路径,默认为“false”。
|
visualized |
否 |
Boolean |
是否可视化,默认为“false”。在异步模式下:
|
restricted(2.2.28) |
否 |
Boolean |
是否对输入严格校验,默认为“true”。
|
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
source |
是 |
String |
源节点ID。 |
target |
是 |
String |
目标节点ID。 |
index |
否 |
String |
此边在源节点边集合中的索引。 |
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
operator |
是 |
String |
表示要做的查询类型,可选的值有:
后一层的查询操作以前一层的查询结果为输入:
|
vertex_filter |
否 |
String |
在“operator”为“ inV”或“outV”或“bothV”时可选,具体格式见表6。 |
edge_filter |
否 |
String |
在“operator”为“in”或“out”或“both”时可选,具体格式见表6。 |
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
id |
否 |
Boolean |
是否输出id。默认为false。 |
label |
否 |
Boolean |
是否输出label。默认为false。 |
properties |
否 |
Boolean |
是否输出properties。默认为false。 |
selectedProperties |
否 |
Array of String |
当properties字段为true时,可以选择输出的属性项。 字段为空时输出所有属性字段。默认为空。 |
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
leftvalue |
是 |
String |
左值,具体格式见表7。 |
predicate |
是 |
String |
表示过滤类型,支持的操作如下: 比较运算符:
逻辑运算:
集合运算:
匹配运算符:
HAS/HASNOT:是否有此属性,仅支持属性过滤,即左值仅支持property_name。 |
rightvalue |
是 |
String |
右值,具体格式见表8。 |
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
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”。 |
参数 |
是否必选 |
类型 |
说明 |
---|---|---|---|
value |
是 |
String |
|
property_filter |
否 |
String |
若“predicate”为“&”或者“|”,可在“leftvalue”和“rightvalue”中嵌套使用“property_filter”。 |
predicate |
label_name |
id |
property_name |
嵌套filter |
---|---|---|---|---|
& |
否 |
否 |
否 |
是 |
| |
否 |
否 |
否 |
是 |
HAS/HASNOT |
否 |
否 |
是 |
否 |
CONTAIN/NOTCONTAIN |
否 |
否 |
是 |
否 |
SUBSET |
否 |
否 |
是 |
是(仅支持右值为集合,若为single,则无过滤作用直接匹配) |
IN/NOTIN |
是 |
是 |
是 |
是(仅支持右值为集合,若为single,则不匹配) |
PREFIX |
是 |
是 |
是 |
否 |
FUZZY |
是 |
是 |
是 |
否 |
REGEX |
是 |
是 |
是 |
否 |
SUBSTRING |
是 |
是 |
是 |
否 |
CISUBSTRING |
是 |
是 |
是 |
否 |
=/!=/</<=/>/>= |
是 |
是 |
是 |
否 |
- 支持左值是集合:body体中左值为string。
- 支持右值是集合:选择否,说明即使支持也仅匹配集合中第一个字符串。
- boolean值匹配,当右值输入为”true”时,将被识别为“true”进行匹配,否则识别为“false”进行匹配。
响应参数
- 同步返回
表10 响应Body参数说明 参数
类型
说明
errorMessage
String
系统提示信息。
- 执行成功时,字段可能为空。
- 执行失败时,用于显示错误信息。
errorCode
String
系统提示信息。
- 执行成功时,字段可能为空。
- 执行失败时,用于显示错误码。
data
Object
查询结果。查询失败时,字段为空。
表11 data参数说明 参数
类型
说明
vertices
List
点的结果集合。filters最后一层为点过滤时,data中将包含vertices。
edges
List
边的结果集合。filters最后一层为边过滤时,data中将包含edges。
paths
List
路径信息集合。with_path为true时可输出。格式见表12。
- 异步返回
表13 响应Body参数说明 参数
类型
说明
errorMessage
String
系统提示信息。
- 执行成功时,字段可能为空。
- 执行失败时,用于显示错误信息。
errorCode
String
系统提示信息。
- 执行成功时,字段可能为空。
- 执行失败时,用于显示错误码。
jobId
String
执行算法任务ID。请求失败时,该字段为空。
jobType
Integer
任务类型。请求失败时,该字段为空。
请求示例
- (同步模式)列出满足过滤条件的第k跳节点或边,执行模式是同步,不进行可视化即查询job结果分页返回。
POST /ges/v1.0/{project_id}/graphs/{graph_name}/action?action_id=filtered-query { "executionMode": "sync", "visulized": "false", "filters": [ { "operator": "outV" }, { "operator": "out", "edge_filter": { "property_filter": { "leftvalue": { "label_name": "labelName" }, "predicate": "=", "rightvalue": { "value": "rate" } } } } ], "full_path": false, "vertices": [ "tr_10" ] }
- (异步模式)列出满足过滤条件的第k跳节点或边,执行模式是异步,不进行可视化即查询job结果分页返回。
POST /ges/v1.0/{project_id}/graphs/{graph_name}/action?action_id=filtered-query { "executionMode": "async", "visulized": "false", "filters": [ { "operator": "outV" }, { "operator": "out", "edge_filter": { "property_filter": { "leftvalue": { "label_name": "labelName" }, "predicate": "=", "rightvalue": { "value": "rate" } } } } ], "full_path": false, "vertices": [ "tr_10" ] }
- 嵌套property_filter,列出满足过滤条件的第k跳节点或边,执行模式是同步,不进行可视化即查询job结果分页返回。
{ "executionMode": "sync", "filters": [ { "operator": "outV", "vertex_filter": { "property_filter": { "leftvalue": { "property_filter": { "leftvalue": { "property_name": "genres" }, "predicate": "PREFIX", "rightvalue": { "value": "A|" } } }, "predicate": "&", "rightvalue": { "property_filter": { "leftvalue": { "label_name": "labelName" }, "predicate": "=", "rightvalue": { "value": "movie" } } } } } } ], "vertices": [ "tr_3" ] }
响应示例
- 同步返回
成功响应示例
Http Status Code: 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
失败响应示例Http Status Code: 400 { "errorMessage": "graph [tesdt_117] is not found", "errorCode": "GES.8806" }
- 异步返回
成功响应示例
Http Status Code: 200 { "jobId": "6622f13c-4b88-45f5-89a9-eaa096647c4a", "jobType": 1 }
状态码: 400
失败响应示例Http Status Code: 400 { "errorMessage": "executionMode is not correct, it should be sync or async", "errorCode": "GES.8806" }
状态码
返回值 |
说明 |
---|---|
400 Bad Request |
请求错误。 |
401 Unauthorized |
鉴权失败。 |
403 Forbidden |
没有操作权限。 |
404 Not Found |
找不到资源。 |
500 Internal Server Error |
服务内部错误。 |
503 Service Unavailable |
服务不可用。 |
错误码
请参见错误码。