REBUILD INDEX¶
Danger
索引功能不会自动对其创建之前已存在的存量数据生效————在索引重建完成之前,无法基于该索引使用LOOKUP和MATCH语句查询到存量数据。
重建索引期间,所有查询都会跳过索引并执行顺序扫描,返回结果可能不一致。
请在创建索引后,选择合适的时间为存量数据重建索引。使用索引的详情请参见 CREATE INDEX。
语法¶
```ngql
REBUILD {TAG | EDGE} INDEX [
- 可以一次重建多个索引,索引名称之间用英文逗号(,)分隔。如果没有指定索引名称,将会重建所有索引。
- 重建完成后,用户可以使用命令
SHOW {TAG | EDGE} INDEX STATUS检查索引是否重建完成。详情请参见 SHOW INDEX STATUS。
示例¶
```ngql nebula> CREATE TAG IF NOT EXISTS person(name string, age int, gender string, email string); nebula> CREATE TAG INDEX IF NOT EXISTS single_person_index ON person(name(10));
重建索引,返回任务 ID。¶
nebula> REBUILD TAG INDEX single_person_index; +------------+ | New Job Id | +------------+ | 31 | +------------+
查看索引状态。¶
nebula> SHOW TAG INDEX STATUS; +-----------------------+--------------+ | Name | Index Status | +-----------------------+--------------+ | "single_person_index" | "FINISHED" | +-----------------------+--------------+
也可以使用 SHOW JOB 查看重建索引的任务状态。¶
nebula> SHOW JOB 31; +----------------+---------------------+------------+-------------------------+-------------------------+ | Job Id(TaskId) | Command(Dest) | Status | Start Time | Stop Time | +----------------+---------------------+------------+-------------------------+-------------------------+ | 31 | "REBUILD_TAG_INDEX" | "FINISHED" | 2021-07-07T09:04:24.000 | 2021-07-07T09:04:24.000 | | 0 | "storaged1" | "FINISHED" | 2021-07-07T09:04:24.000 | 2021-07-07T09:04:28.000 | | 1 | "storaged2" | "FINISHED" | 2021-07-07T09:04:24.000 | 2021-07-07T09:04:28.000 | | 2 | "storaged0" | "FINISHED" | 2021-07-07T09:04:24.000 | 2021-07-07T09:04:28.000 | +----------------+---------------------+------------+-------------------------+-------------------------+ ```
Nebula Graph 创建一个任务去重建索引,因此可以根据返回的任务 ID,通过SHOW JOB <job_id>语句查看任务状态。详情请参见 SHOW JOB。