更新时间:2024-12-03 GMT+08:00
分享

批量新建索引

功能介绍

支持一次性新建多个索引,相较于逐个建立索引,批量新建多个索引会减少数据扫描的次数,可降低整体耗时。支持创建的索引类型与新建索引接口相同,请参见新建索引

索引创建后需要等待30秒索引同步时间,同步完成后Cypher查询才可以利用索引进行加速。

URI

POST /ges/v1.0/{project_id}/graphs/{graph_name}/indices/action?action_id=batch-build
表1 路径参数

参数

是否必选

类型

说明

project_id

String

项目ID。获取方法请参见获取项目ID

graph_name

String

图名称。

请求参数

表2 Body参数说明

参数

是否必选

类型

说明

indices

Array

索引数组。新建索引数不可超过最大支持索引数减去已存在索引数。当前最多支持新建10个索引。索引参数详情参见表3 indices参数说明

表3 indices参数说明

参数

是否必选

类型

说明

indexName

String

索引名称。只能包含字母,数字,-和_。不能包含其他字符。索引名称的长度需在63字符以内。

indexType

String

索引的类型,区分大小写。

  • “GlobalCompositeVertexIndex”为全局的Composite类型的点索引。
  • “GlobalCompositeEdgeIndex”为全局的Composite类型的边索引。
  • “CompositeVertexIndex”为局部的Composite类型的点索引。
  • “CompositeEdgeIndex”为局部的Composite类型的边索引。
  • “FullTextIndex”为全文索引。

hasLabel

Boolean

是否有label,默认为false。

  • true
  • false

indexLabel

List

Label列表,仅在indexType为CompositeVertexIndex或CompositeEdgeIndex时有效且必填。用以指定在哪些label上建立索引。

indexProperty

否(若hasLabel为false或null,则该项为必选)

String

索引的属性列表。

可以创建索引的属性类型有: integer、 float、 double、 long、 enum、 string、 date。

strLength

Integer

String类型的属性在编码索引时会按照一固定长度来截断,strLength用于指定此截断长度。未指定时默认值为40字节,用户可指定范围为[1, 256]。

通常用户不需要手动指定此参数,即使有些属性超过此长度,索引编码时被截断。一般也不会有明显的性能劣化。除非绝大多数属性均超过默认长度,可以考虑适当增大strLength,但是会带来索引修改的性能下降。

  • 如果属性类型为string,属性长度建议不要超过40个字节,超出的部分会被截断。
  • Cypher查询可以借助hasLabel为True的索引来加速。
    • indexProperty为空时,建立的索引为label索引,可以加速label过滤。
    • indexProperty不为空时,建立的索引为属性索引,可以加速对应的属性过滤。

响应参数

表4 响应Body参数说明

参数

类型

说明

errorMessage

String

系统提示信息。

  • 执行成功时,字段可能为空。
  • 执行失败时,用于显示错误信息。

errorCode

String

系统提示信息。

  • 执行成功时,字段可能为空。
  • 执行失败时,用于显示错误码。

jobId

String

执行该异步任务的jobId。

说明:
  • 可以查询jobId查看任务执行状态、获取返回结果,详情参考Job管理API

jobType

String

执行该异步任务的jobType。

result

String

成功时result值为success。

请求示例

一次性新建多个复合索引,索引名称分别为vertexIndex,edgeIndex,useridIndex。

POST http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/indices/action?action_id=batch-build
{
    "indices": [
        {
            "indexName": "vertexIndex",
            "indexType": "GlobalCompositeVertexIndex",
            "hasLabel": true,
            "indexProperty": []
        },
        {
            "indexName": "edgeIndex",
            "indexType": "GlobalCompositeEdgeIndex",
            "hasLabel": true,
            "indexProperty": []
        },
	{
            "indexName": "useridIndex",
            "indexType": "GlobalCompositeEdgeIndex",
            "hasLabel": true,
            "indexProperty": ["userid"]
        }
    ]
}

SERVER_URL:图的访问地址,取值请参考业务面API使用限制

响应示例

状态码: 200

成功响应示例

Http Status Code: 200
{
"jobId": "f99f60f1-bba6-4cde-bd1a-ff4bdd1fd500000168232",
"jobType": 8
}

状态码: 400

失败响应示例

Http Status Code: 400
{
  "errorMessage": "graph [demo] is not found",
  "errorCode": "GES.8603"
}

状态码

返回值

说明

400 Bad Request

请求错误。

401 Unauthorized

鉴权失败。

403 Forbidden

没有操作权限。

404 Not Found

找不到资源。

500 Internal Server Error

服务内部错误。

503 Service Unavailable

服务不可用。

错误码

请参见错误码

相关文档