云原生多模数据库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操作,默认异步执行。
    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操作,默认异步执行。
    ALTER SEARCH INDEX IF EXISTS idx ON tbn REBUILD;

修改搜索索引属性

语法
ALTER SEARCH INDEX [IF EXISTS] index_name ON table_name index_state_definition 
                                 [ WITH index_options ]

index_state_definition:
REBUILD [ WITH index_options ] | DISABLED | UNUSABLE | USABLE 

index_options:
option_name '=' option_value (',' option_name '=' option_value)
参数

index_state_definition参数的说明。

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

index_options参数的说明。

参数 类型 描述
async String 是否异步构建搜索索引或执行REBUILD操作。
  • true:默认值,异步执行。
  • false:同步执行。
示例
  • 禁用搜索索引。
    ALTER SEARCH INDEX IF EXISTS idx ON tbn DISABLED;
  • 重新对历史数据构建搜索索引,指定异步执行构建操作,并清空搜索索引数据。
    ALTER SEARCH INDEX IF EXISTS idx ON tbn REBUILD WITH ("async"=true);