执行GQL查询
功能介绍
图查询语言(Graph Query Language)简称GQL,是声明式查询语言,其核心语法类似Cypher,可以使用GQL查询GES中的数据,并返回结果。GQL查询详细介绍请参考GQL语法说明。
URI
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
项目编号,用于资源隔离。请参考获取项目ID。 |
graph_name |
是 |
String |
图名称。 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
statements |
是 |
List |
statements为一个语句组,包含一到多条语句。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
statement |
是 |
String |
GQL语句。 |
parameters |
否 |
Json |
GQL语句参数,在进行参数化查询时使用,默认为空。如需使用,请参考参数化查询。 |
resultDataContents |
否 |
String或List |
返回的结果样式,样式可设置一个或多个。可选参数有“row”,”graph”, “raw”。 |
includeStats |
否 |
Boolean |
控制返回结果是否携带增删改统计信息的开关,若不设置此字段,默认为不携带。 |
runtime |
否 |
String |
执行器类型,默认为“block”。 |
executionMode |
否 |
String |
执行模式。同步执行模式填写“sync”,异步执行填写“async”,不写默认同步执行。异步模式下,获取查询结果参见5.10.1节 查Job状态。 |
limit |
否 |
Integer |
该字段仅在异步模式下生效,表示对异步结果的最大结果数限制,默认值为100000。 |

- 在语句前可以添加explain和profile前缀,用于显示查询计划: explain只显示查询计划,不执行语句;profile显示查询计划,并执行语句。
- 在异步模式(executionMode参数值为async)下,内存版支持GQL查询结果以csv格式导出到文件。目前支持下列对象的返回:点边单值属性、点边id、分组计数结果等值类型。对于对象类型,目前的版本暂不支持导出,csv中视作空值处理,详情参考导出job返回结果到文件。
响应参数
参数 |
类型 |
说明 |
---|---|---|
results |
List |
每个元素是一条GQL语句的返回结果,详细参数介绍参见参数results中各要素说明。 |
errors |
List |
每个元素包含字符串形式的code和message信息。 |
参数 |
类型 |
说明 |
---|---|---|
columns |
List |
返回的字段名。 |
data |
List |
返回的数据值,每个元素代表一条记录,详细参数说明请参见参数data中各要素说明。 |
stats |
Json |
返回的增删改统计信息,详细参数说明请参见参数stats中各要素说明。 |
plan |
Json |
如果GQL语句带explain或者profile前缀,则此字段输出查询计划,否则不显示该字段,正常执行查询。 |
jobId |
String |
请求为异步执行模式下,该字段用于输出异步任务id。 |
jobType |
Integer |
请求为异步执行模式下,该字段用于输出异步任务的类型。 |
请求示例
POST http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/action?action_id=execute-gql-query { "statements": [{ "statement": "match (n) return n limit 1", "runtime":"block", "parameters": {}, "resultDataContents": ["raw"] }], "includeStats": true }
响应示例
- 同步任务请求成功样例
Http Status Code: 200 { "results": [ { "columns": ["n"], "data": [ { "row": [ { "occupation": "artist", "gender": "F", "Zip-code": "98133", "userid": 0, "age": "25-34" } ], "meta": [ { "id": "46", "type": "node", "labels": [ "user" ] } ] } ], "stats": { "contains_updates": false, "edges_created": 0, "edges_deleted": 0, "labels_set": 0, "properties_set": 0, "vertices_created": 0, "vertices_deleted": 0 } } ], "errors": [] }
- 异步任务请求成功样例
Http Status Code: 200 { "results": [ { "columns": ["n"], "data": [ { "row": [ { "occupation": "artist", "gender": "F", "Zip-code": "98133", "userid": 0, "age": "25-34" } ], "meta": [ { "id": "46", "type": "node", "labels": [ "user" ] } ] } ], "stats": { "contains_updates": false, "edges_created": 0, "edges_deleted": 0, "labels_set": 0, "properties_set": 0, "vertices_created": 0, "vertices_deleted": 0 } } ], "errors": [] }
状态码: 400
Http Status Code: 200 { "results": [], "errors": [ { "code": "GES.8904", "message": "Label index in vertices is not found." } ] }
状态码
返回值 |
说明 |
---|---|
400 Bad Request |
请求错误。 |
401 Unauthorized |
鉴权失败。 |
403 Forbidden |
没有操作权限。 |
404 Not Found |
找不到资源。 |
500 Internal Server Error |
服务内部错误。 |
503 Service Unavailable |
服务不可用。 |