执行Cypher查询
功能介绍
Cypher是一种被广泛使用的声明式图数据库查询语言,使用Cypher语句可以查询GES中的数据,并返回结果。当前的Cypher实现中使用了图的统计信息,目前Cypher查询编译过程中使用了基于label的点边索引,如需正常使用Cypher,请先参考Cypher预置条件构建索引。
URI
参数 | 是否必选 | 类型 | 说明 |
|---|---|---|---|
project_id | 是 | String | 参数解释: 项目编号。获取方法,请参见获取项目ID。 约束限制: 不涉及。 取值范围: 只能由英文字母和数字组成,且长度为[1-64]个字符。 默认取值: 不涉及。 |
graph_name | 是 | String | 图名称。 |
请求参数
参数 | 是否必选 | 类型 | 说明 |
|---|---|---|---|
statements | 是 | List | statements为一个语句组,包含一到多条语句。其中每个元素的格式如statements参数说明。 |
参数 | 是否必选 | 类型 | 说明 |
|---|---|---|---|
statement | 是 | String | Cypher语句。 |
parameters | 否 | Object | Cypher语句参数,在进行参数化查询时使用,默认为空。 如需使用,请参考参数化查询。 |
resultDataContents | 否 | String或List | 返回的结果样式,样式可设置一个或多个。可选参数有“row”,”graph”, “raw”(2.2.27版本新增)。 |
includeStats | 否 | Boolean | 控制返回结果是否携带增删改统计信息的开关,若不设置此字段,默认为不携带。 |
runtime | 否 | String | 执行器类型,可选值为“map”、“slotted” 、“block”,默认为“map”。 说明:
|
executionMode(2.2.23) | 否 | String | 执行模式。同步执行模式填写“sync”,异步执行填写“async”,不写默认同步执行。异步模式下,获取查询结果参见查询Job状态。 |
limit(2.2.23) | 否 | Int | 该字段仅在异步模式下生效,表示对异步结果的最大结果数限制,默认值为100000。 |

- 在语句前可以添加explain或profile前缀,用于显示查询计划:
- explain只显示查询计划,不执行语句。explain前缀2.2.20版本开始支持。
- profile显示查询计划,并执行语句。profile前缀2.3.12版本开始支持。
- 在异步模式(executionMode参数值为async)下,支持cypher查询结果以csv格式导出到文件(GES版本2.3.4及以上支持该功能),详情请参考导出job返回结果到文件。目前支持下列对象的返回:
- 点边单值属性、点边id、分组计数结果等值类型。
- 对于对象类型,目前的版本暂不支持导出,csv中视作空值处理。
响应参数
参数 | 类型 | 说明 |
|---|---|---|
results | List | 每个元素是一条Cypher语句的返回结果。 |
errors | List | 每个元素包含字符串形式的code和message信息。 |
参数 | 类型 | 说明 |
|---|---|---|
columns | List | 返回的字段名。 |
data | List | 返回的数据值,每个元素代表一条记录。 |
stats | Object | 返回的增删改统计信息。 |
plan | Object | 如果cypher语句带explain或者profile前缀,则此字段输出查询计划,否则不显示该字段,正常执行查询。profile特性2.3.12版本开始支持。 |
jobId(2.3.10) | String | 请求为异步执行模式下,该字段用于输出异步任务id。 |
jobType(2.3.10) | Integer | 请求为异步执行模式下,该字段用于输出异步任务的类型。 |
参数 | 类型 | 说明 |
|---|---|---|
row | List | 表示具体一行的内容,每个元素对应该行的一个字段,仅当resultDataContents为空或者包含“row”类型时显示。 |
meta | List | 表示该行每个字段的类型信息,仅当resultDataContents为空或者包含“row”类型时显示。 |
graph | Object | 以“graph”样式返回该行信息,仅当resultDataContents包含“graph”类型时显示。 |
raw(2.2.27) | List | 以“raw”样式返回该行信息,仅当resultDataContents包含“raw”类型时显示。 |
参数 | 类型 | 说明 |
|---|---|---|
contains_updates | Boolean | 表示本次查询是否有数据修改。 |
edges_created | Integer | 创建的边数目。 |
edges_deleted | Integer | 删除的边数目。 |
labels_set | Integer | 设置的label数目。 |
properties_set | Integer | 设置的属性数目。 |
vertices_created | Integer | 创建的点数目。 |
vertices_deleted | Integer | 删除的点数目。 |
请求示例
执行Cypher查询,Cypher语句为match (n) return n limit 1。
POST http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/action?action_id=execute-cypher-query
{
"statements": [{
"statement": "match (n) return n limit 1",
"parameters": {},
"resultDataContents": ["row"],
"includeStats": false
}]
} 响应示例
状态码: 200
成功响应示例(同步任务)
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": []
}
状态码: 200
成功响应示例(异步任务)
Http Status Code: 200
{
"results": [
{
"columns": [
"jobId",
"jobType"
],
"jobId": "b64a5846-e306-4f87-b0f1-d595ee2a9990",
"jobType": 1,
"data": [
{
"row": [
"b64a5846-e306-4f87-b0f1-d595ee2a9990",
1
],
"meta": [
null,
null
]
}
]
}
],
"errors": []
} 状态码: 400
失败响应示例
Http Status Code: 400
{
"results": [],
"errors": [
{
"code": "GES.8901",
"message": "No statement provided."
}
]
} 状态码
返回值 | 说明 |
|---|---|
202 Accepted | 请求已接收,暂未处理。 |
400 Bad Request | 请求错误。 |
401 Unauthorized | 鉴权失败。 |
403 Forbidden | 没有操作权限。 |
404 Not Found | 找不到资源。 |
500 Internal Server Error | 服务内部错误。 |
503 Service Unavailable | 服务不可用。 |
错误码
请参见错误码。

