云原生多模数据库Lindorm支持通过ALTER SEARCH INDEX新增索引列,删除索引列,修改搜索索引状态。

注意事项

  • 索引表的列属性定义后,不可更改。
  • 删除索引列后不支持新增相同名称的索引列。

使用说明

  • 执行新增索引列或删除索引列操作后,还需要执行REBUILD操作。
  • 索引列支持的数据类型包括:TINYINT、SMALLINT、INTEGER、INT、BIGINT、LONG、FLOAT、DOUBLE、VARCHAR、BINARY、VARBINARY、BOOLEAN。

新增索引列

语法

ALTER SEARCH INDEX [IF EXISTS] index_name ON table_name ADD COLUMNS '(' index_identifier ')'

index_identifier:
(column_name['(' column_options ')'] ',' ... column_name['(' column_options ')'])*    
           
column_options:
option_name '=' option_value (',' option_name '=' option_value)

参数

column_options参数的说明。

参数 类型 描述
indexed String 是否需要索引。
  • true:默认值,需要索引。
  • false:不需要索引。
rowStored String 是否存储原始数据。
  • true:存储原始数据。
  • false:默认值,不存储。
columnStored String 是否设置为列存储,用来加速排序分析。
  • true:默认值,设置列存储。
  • false:不设置列存储。
type String 分词场景下,分词字段需要设置type参数为text,其它情况默认与宽表数据类型保持一致。
说明 需要同时与analyzer分词器使用。
analyzer String 分词场景下需要使用分词器。取值:
  • standard
  • english
  • ik
  • whitespace
  • comma
说明
  • 需要同时与type参数使用。
  • 当列在宽表中类型为数据类型(例如:INT)时,需要用standard分词器。

示例

  1. 创建SCHEMA和表。如果SCHEMA和表已存在,可以跳过该步骤。
    CREATE SCHEMA test;
    USE test;
    CREATE TABLE IF NOT EXISTS tbn (p1 varchar, p2 varchar, col1 bigint, col2 varchar, col3 varchar, constraint primary key (p1, p2 desc));
  2. 新增一个或多个索引列。
    • 不指定具体列属性。
      ALTER SEARCH INDEX IF EXISTS idx ON tbn ADD COLUMNS(col1,col2,col3);
    • 指定具体列属性。
      ALTER SEARCH INDEX IF EXISTS idx ON tbn ADD COLUMNS(col1,col2,col3(type=text,analyzer=ik));
  3. 有历史数据的场景,需要执行REBUILD操作,默认同步执行。执行后,可以在LTS页面左侧导航栏选择Lindorm Search > 全量同步,查看REBUILD进度,具体操作请参见购买并登录LTS
    ALTER SEARCH INDEX IF EXISTS idx ON tbn REBUILD;

删除索引列

语法

ALTER SEARCH INDEX [IF EXISTS] index_name ON table_name DROP COLUMNS '(' index_identifier ')'

index_identifier:
(column_name ',' ... column_name)*

示例

  • 删除多个索引列,不指定具体列属性。
    ALTER SEARCH INDEX IF EXISTS idx ON tbn DROP COLUMNS(col2,col3);
  • 删除后,需要重新构建索引,即执行REBUILD操作,默认同步执行。执行后,可以在LTS页面左侧导航栏选择Lindorm Search > 全量同步,查看REBUILD进度,具体操作请参见购买并登录LTS
    ALTER SEARCH INDEX IF EXISTS idx ON tbn REBUILD;

修改搜索索引状态

语法

ALTER SEARCH INDEX [IF EXISTS] index_name ON table_name index_state_definition
                                 [ASYNC]

index_state_definition:
REBUILD | DISABLED | UNUSABLE | USABLE 

参数

index_state_definition参数的说明。

参数 类型 描述
DISABLED String 禁用搜索索引,再次启用前,需要进行REBUILD操作。
REBUILD String 重新对历史数据构建搜索索引,搜索索引构建完成后,搜索索引状态会自动变为USABLE。
UNUSABLE String 禁用搜索索引,再次启用前无需进行REBUILD操作,因为禁用期间主表数据会同步应用到索引表。
USABLE String 启用搜索索引。

示例

  • 禁用搜索索引。
    ALTER SEARCH INDEX IF EXISTS idx ON tbn DISABLED;
  • 重新对历史数据构建搜索索引,默认同步执行构建,也可以通过ASYNC参数指定异步执行构建。执行后,可以在LTS页面左侧导航栏选择Lindorm Search > 全量同步,查看REBUILD进度,具体操作请参见购买并登录LTS
    ALTER SEARCH INDEX IF EXISTS idx ON tbn REBUILD;
    ALTER SEARCH INDEX IF EXISTS idx ON tbn REBUILD ASYNC;