
# 批量新建索引
#### 功能介绍
支持一次性新建多个索引，相较于逐个建立索引，批量新建多个索引会减少数据扫描的次数，可降低整体耗时。支持创建的索引类型与新建索引接口相同，请参见[新建索引](https://support.huaweicloud.com/api-ges/ges_03_0454.html)。
![](https://support.huaweicloud.com/api-ges/public_sys-resources/note_3.0-zh-cn.png)
索引创建后需要等待30秒索引同步时间，同步完成后Cypher查询才可以利用索引进行加速。
#### URI
POST /ges/v1.0/{project_id}/graphs/{graph_name}/indices/action?action_id=batch-build
表1路径参数 
| 参数         | 是否必选 | 类型     | 说明                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释：** 项目编号。获取方法，请参见[获取项目ID](https://support.huaweicloud.com/api-ges/ges_03_0111.html)。 **约束限制：** 不涉及。 **取值范围：** 只能由英文字母和数字组成，且长度为\[1-64\]个字符。 **默认取值：** 不涉及。 |
| graph_name | 是    | String | **参数解释：** 图名称。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                          |
   
#### 请求参数
表2Body参数说明 
|   参数    | 是否必选 |  类型   |                                        说明                                         |
|---|---|---|---|
| indices | 是    | Array | 索引数组，当前单个图最多支持500个索引。索引参数详情参见[表3 indices参数说明]。 |
   
 表3indices参数说明 
| 参数            | 是否必选                           | 类型      | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| 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，但是会带来索引修改的性能下降。                                                                                                                                                                                                                                                                                                                                                                                                 |
   
![](https://support.huaweicloud.com/api-ges/public_sys-resources/note_3.0-zh-cn.png)
- 如果属性类型为string或者char array，属性长度建议不要超过40个字节，超出的部分会被截断。
- Cypher查询可以借助hasLabel为True的索引来加速。
  - indexProperty为空时，建立的索引为label索引，可以加速label过滤。
  
  - indexProperty不为空时，建立的索引为属性索引，可以加速对应的属性过滤。
   
 
#### 响应参数
表4响应Body参数说明 
| 参数           | 类型     | 说明                                                                                                                                                                                                                                              |
|:---|:---|:---|
| errorMessage | String | 系统提示信息。 - 执行成功时，字段可能为空。  - 执行失败时，用于显示错误信息。              |
| errorCode    | String | 系统提示信息。 - 执行成功时，字段可能为空。  - 执行失败时，用于显示错误码。                   |
| jobId        | String | 执行该异步任务的jobId。 说明： - 可以查询jobId查看任务执行状态、获取返回结果，详情参考[Job管理API](https://support.huaweicloud.com/api-ges/ges_03_0036.html)。   |
   
#### 请求示例
一次性新建多个复合索引，索引名称分别为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"]
        }
    ]
}
```
![](https://support.huaweicloud.com/api-ges/public_sys-resources/note_3.0-zh-cn.png)
SERVER_URL：图的访问地址，取值请参考[业务面API使用限制](https://support.huaweicloud.com/api-ges/ges_03_0139.html)。
#### 响应示例
**状态码： 200**
成功响应示例
```
Http Status Code: 200
{
    "jobId": "ccffb1141c909708a5a700d763dc93450000314299090"
}
```
**状态码： 400**
失败响应示例
```
Http Status Code: 400
{
    "errorMessage": "Parameter error!",
    "errorCode": "GES.8005"
}
```
#### 状态码
| 返回值                       | 说明      |
|:---|:---|
| 400 Bad Request           | 请求错误。   |
| 401 Unauthorized          | 鉴权失败。   |
| 403 Forbidden             | 没有操作权限。 |
| 404 Not Found             | 找不到资源。  |
| 500 Internal Server Error | 服务内部错误。 |
| 503 Service Unavailable   | 服务不可用。  |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-ges/ges_03_0110.html)。
