应用结构
数据推送到OpenSearch后会先保存到离线数据表中,在此阶段,为了方便用户推送数据,数据表允许用户根据实际业务场景定义多个字段(需要指定关联字段),并提供了数据处理的插件。数据处理完毕后会构建为一张索引表,这种索引表主要定义搜索属性,供引擎构建索引及查询使用。
数据表字段
数据表主要为数据导入时使用,不同的数据处理插件对类型有不同的要求。具体字段取值范围,请参见使用限制-字段相关部分说明。超过取值范围将溢出或者截断,请务必保证选择类型正确。
类型 | 说明 |
INT | int64整型 |
INT_ARRAY | int64整型数组 |
FLOAT | 浮点型 |
FLOAT_ARRAY | 浮点型数组 |
DOUBLE | 浮点型 |
DOUBLE_ARRAY | 浮点型数组 |
LITERAL | 字符串常量,仅支持精确匹配 |
LITERAL_ARRAY | 字符串常量数组,单个元素仅支持精确匹配 |
SHORT_TEXT | 短文本,长度在100字节内,支持若干分词方式 |
TEXT | 长文本,支持若干分词方式 |
TIMESTAMP | uint64整型,时间戳数据 |
GEO_POINT | 字符串常量,经纬度字段,格式为:”经度 纬度” |
保留字段说明:
[‘service_id’, ‘ops_app_name’, ‘inter_timestamp’, ‘index_name’, ‘pk’, ‘ops_version’, ‘ha_reserved_timestamp’,‘summary’] 这些字段名称为保留字段,暂时无法作为字段名称配置。
ARRAY数组类型说明:
如果应用字段创建为ARRAY类型,数据源字段映射时,该字段可以关联varchar/string(字符串类型),并使用数据源插件说明解析数据源字段。
若该ARRAY类型字段使用API/SDK推送,则请按数组类型推送,不要按string推送。如:String[] literal_array = {“阿里云”,”开放搜索”};
时间戳字段说明:
INT和TIMESTAMP类型可以映射数据源字段中的datetime/timestamp字段,会自动将其转化为毫秒数。搜索时可以通过Range范围查询,按时间区间过滤召回。
支持的数据源字段类型
数据源 | 支持的字段类型 |
RDS | TINYINT,SMALLINT,INTEGER,BIGINT,FLOAT,REAL,DOUBLE,NUMERIC,DECIMAL,TIME,DATE,TIMESTAMP,VARCHAR |
PolarDB | TINYINT,SMALLINT,INTEGER,BIGINT,FLOAT,REAL,DOUBLE,NUMERIC,DECIMAL,TIME,DATE,TIMESTAMP,VARCHAR |
MaxCompute(原odps) | BIGINT,DOUBLE,BOOLEAN,DATETIME,STRING,DECIMAL,MAP,ARRAY,TINYINT,SMALLINT,INT,FLOAT,CHAR,VARCHAR,DATE,TIMESTAMP,BINARY,INTERVAL_DAY_TIME,INTERVAL_YEAR_MONTH,STRUCT |
OpenSearch表的字段类型与数据库表的字段类型的对应关系
OpenSearch表 | RDS表 | PolarDB表 | MaxCompute(原odps)表 |
INT | BIGINT,TINYINT,SMALLINT,INTEGER | BIGINT,TINYINT,SMALLINT,INTEGER | BIGINT,TINYINT,SMALLINT,INT |
INT_ARRAY | VARCHAR、STRING等字符串类型,需用数据源插件MultiValueSpliter转换 | VARCHAR、STRING等字符串类型,需用数据源插件MultiValueSpliter转换 | VARCHAR、STRING等字符串类型,需用数据源插件MultiValueSpliter转换 |
FLOAT | FLOAT,NUMERIC,DECIMAL | FLOAT,NUMERIC,DECIMAL | FLOAT,DECIMAL |
FLOAT_ARRAY | VARCHAR、STRING等字符串类型,需用数据源插件MultiValueSpliter转换 | VARCHAR、STRING等字符串类型,需用数据源插件MultiValueSpliter转换 | VARCHAR、STRING等字符串类型,需用数据源插件MultiValueSpliter转换 |
DOUBLE | DOUBLE,NUMERIC,DECIMAL | DOUBLE,NUMERIC,DECIMAL | DOUBLE,DECIMAL |
DOUBLE_ARRAY | VARCHAR等字符串类型,需用数据源插件MultiValueSpliter转换 | VARCHAR等字符串类型,需用数据源插件MultiValueSpliter转换 | VARCHAR、STRING等字符串类型,需用数据源插件MultiValueSpliter转换 |
LITERAL | VARCHAR等字符串类型 | VARCHAR等字符串类型 | VARCHAR、STRING等字符串类型 |
LITERAL_ARRAY | VARCHAR等字符串类型,需用数据源插件MultiValueSpliter转换 | VARCHAR等字符串类型,需用数据源插件MultiValueSpliter转换 | VARCHAR、STRING等字符串类型,需用数据源插件MultiValueSpliter转换 |
SHORT_TEXT | VARCHAR等字符串类型 | VARCHAR等字符串类型 | VARCHAR、STRING等字符串类型 |
TEXT | VARCHAR等字符串类型 | VARCHAR等字符串类型 | VARCHAR、STRING等字符串类型 |
TIMESTAMP | datetime/timestamp类型 | datetime/timestamp类型 | datetime/timestamp类型 |
GEO_POINT | VARCHAR等字符串类型 | VARCHAR等字符串类型 | VARCHAR、STRING等字符串类型,格式为: lon lat。lon表示经度,lat表示纬度,都为double类型,二者之间用空格分隔。lon的范围: [-180, 180], lat范围[-90, 90]。 |
注意:
数据源字段数据类型如果是FLOAT或DOUBLE类型,建议改为DECIMAL类型,否则可能会出现精度不正确的情况。
创建应用结构方式介绍
OpenSearch提供如下4中方式创建应用结构(OpenSearch的表结构):
通过数据源的方式创建(RDS数据源配置、MaxCompute(原ODPS)数据源配置、PolarDB数据源配置);
手动创建;
通过模板创建(应用间迁移);