Filtered-query API(2.2.13) - FilteredQuery
功能介绍
对k跳过程进行逐层过滤,列出满足过滤条件的第k跳节点或边。
URI
| 参数 | 是否必选 | 类型 | 说明 |
|---|---|---|---|
| project_id | 是 | String | 参数解释: 项目编号。获取方法,请参见获取项目ID。 约束限制: 不涉及。 取值范围: 只能由英文字母和数字组成,且长度为[1-64]个字符。 默认取值: 不涉及。 |
| graph_name | 是 | String | 参数解释: 图名称。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
请求参数
当executionMode为同步时,返回的点个数不能超过10万。
| 参数 | 是否必选 | 类型 | 说明 |
|---|---|---|---|
| executionMode | 否 | String | 参数解释: 执行模式。 约束限制: 不涉及。 取值范围:
默认取值: 默认为“async”,异步返回。 |
| vertices | 是 | Array of Json | 参数解释: 查询的起始节点ID列表。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 |
| query_type | 否 | String | 参数解释: 用户查询第k跳内容类型。 约束限制: 不涉及。 取值范围:
默认取值: 不涉及。 |
| by | 否 | Array of Json | 参数解释: 用于控制输出字段。 约束限制:
取值范围: 不涉及。 默认取值: 不涉及。 |
| 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
参数解释:
路径信息集合。格式为[[path1],[path2]],path的格式见表12。
取值范围:
不涉及。
- 异步返回
表13 响应Body参数说明 参数
类型
说明
errorMessage
String
参数解释:
系统提示信息。
- 执行成功时,字段可能为空。
- 执行失败时,用于显示错误信息。
取值范围:
不涉及。
errorCode
String
参数解释:
系统提示信息。
- 执行成功时,字段可能为空。
- 执行失败时,用于显示错误码。
取值范围:
不涉及。
jobId
String
参数解释:
执行算法任务ID。请求失败时,该字段为空。
说明:可以查询jobId查看任务执行状态、获取返回结果,详情参考Job管理API。
取值范围:
不涉及。
jobType
Integer
参数解释:
任务类型。请求失败时,该字段为空。
取值范围:
不涉及。
请求示例
- (同步模式)列出满足过滤条件的第k跳节点或边,执行模式是同步,不进行可视化即查询job结果分页返回。
POST http://{SERVER_URL}/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 http://{SERVER_URL}/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结果分页返回。
POST http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/action?action_id=filtered-query { "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": "Not found. Please check the input parameters.", "errorCode": "GES.8000" }
状态码
| 返回值 | 说明 |
|---|---|
| 400 Bad Request | 请求错误。 |
| 401 Unauthorized | 鉴权失败。 |
| 403 Forbidden | 没有操作权限。 |
| 404 Not Found | 找不到资源。 |
| 500 Internal Server Error | 服务内部错误。 |
| 503 Service Unavailable | 服务不可用。 |
错误码
请参见错误码。