阅读977 返回首页    go 微信


数据源__应用基本配置_产品使用手册_开放搜索-阿里云

OpenSearch中的数据,既支持通过API/SDK/上传界面的方式导入,也支持直接从已有的云端数据源进行同步。如果选择通过API或SDK来上传数据,可以参照API手册直接上传,无需额外配置。如果选择同步云端数据的方式,则需要将数据源的相关信息在控制台中进行配置。目前系统提供了若干的数据处理插件可以实现一些简单的数据转化操作,在配置数据源字段对应关系(API方式上传数据的暂不支持,需要用户推送前处理好)可以选择使用。

一张OpenSearch表可以支持多个rds及TDDL(mysql)来源表(如分库分表的场景),但是ODPS源只能配置一个,如需多个ODPS来源表,请先将数据合并成一张表后再导入。

数据处理插件

系统中某些搜索功能或者特征函数需要特殊的字段类型支持。如Array类型字段,需要通过如下插件来转化,用户无法直接输入。
注意:该插件在数据源配置处配置,而不是定义应用结构的时候

配置项名称 说明 示例 版本
JsonKeyValueExtractor 从Json格式的来源字段中提取指定的键值,提取出来的键值作为目标表字段的内容。 {“title”:”the content”,”body”:”the content”} 中提取出键值title的内容,若内容为JsonArray格式,则将转化为系统中Array类型字段内容 高级版
MultiValueSpliter 将来源字段按照分隔符分割成多个值,分割后的内容作为目标表字段的内容,目标表字段必须是配置为ARRAY类型的字段 (若分隔符为不可见字符,需要使用unicode字符来标识,如u001D) 数据源内容为:1,2,3,指定分隔符为, 高级版/标准版
KeyValueExtractor 从KV格式的来源字段中提取指定的键值,提取出来的键值作为目标表字段的内容。分隔符可以不填 实际内容为:key1:value1,value2;key2:value3,键为key1,key2,键分隔符为分号,键值分隔符为冒号,多值分隔符为逗号。如果配置了多值分隔符,则将转化为系统中Array类型字段内容 高级版
StringCatenateExtractor 将多个指定字段按照指定的顺序拼接成一个字符串;字段列表以逗号分隔(字段需来自于目标字段) 将field1,field2内容按照‘_’组成新的字段内容。另系统变量$table可以获取当前表名 高级版

API/SDK数据源

通过API/SDK导入非常灵活,完全由用户控制,具体请参见API开发者指南SDK文档

TDDL(Mysql)数据源配置

仅“内网杭州”区域可见,请移步TDDL对接OpenSearch流程

ODPS源

开放数据处理服务(Open Data Processing Service, 简称ODPS)是一个开放的计算平台,如果您要导入到OpenSearch的数据是由ODPS平台计算而产生的,则可以直接配置ODPS源信息,系统会自动去获取数据。目前只支持全量

ODPS内外网分离,所以在使用上有很多注意事项,我们整理了接入流程,请移步OpenSearch对接ODPS(云梯2)流程

  1. 入口有两个:
    在应用基本配置-数据源中选择ODPS作为数据来源;
    或者创建应用的时候直接配置ODPS源。详见通过ODPS创建应用。数据源-odps

  2. 配置ODPS源信息

OpenSearch支持当前账号下的ODPS的project,或者已经授权给当前账号访问的project中获取数据。选择“ODPS”数据源后,选择“被授权的project”,输入odps中要访问的project信息进行连接校验(已成功连接的project系统会进行缓存,直接点击对应的project名称即可,无需重新连接)。如果连接校验失败,则需要检查授权是否存在。配置odps源

配置字段映射关系:OpenSearch为ODPS源的数据提供了若干数据转换插件,如要使用,则在配置字段对应关系的同时,点击“内容转换”列中的“+”符号,则会在源字段被同步到OpenSearch之前,先进行内容转换,再进行同步。如果内容转换插件由于配置错误、无法连接等错误失效,则源字段仍然会被同步到目标字段,只是内容不会被转换。

字段映射对于ODPS表中的datetime及timestamp类型系统会自动转化为毫秒数,请将对应OpenSearch字段类型设置为INT64。

  1. 选择分区信息

根据ODPS数据特性,OpenSearch允许用户根据具体需要来指定导入的分区,高级版支持正则表达式,如ds=%Y%m%d || -1 days(具体规则如下),表示导入前一天的数据,结合应用基本信息-索引重建-定时索引重建功能,可以实现每天导入新分区数据的效果。标准版目前只支持单个具体分区,如ds=20161010。(等号/逗号/分号/双竖线为系统保留字符,分区列名/列值中应避免出现这些字符):分区字段

  • 1: 支持多个分区过滤规则,不同的分区过滤规则用分号分隔,如pt=1;pt=2 将匹配满足分区字段pt=1或者pt=2的所有字段
  • 2: 分区过滤规则,支持指定多个分区字段的值,不同分区字段用逗号分隔,如:pt1=1,pt2=2,pt3=3 将匹配同时满足pt1=1,pt2=2,pt3=3的所有分区
  • 3: 分区字段的值支持通配符 *,表示该分区字段可以为任意的值,这种情况下,过滤规则中也可不写该字段
  • 4: 分区字段的值支持正则表达式,如pt=[0-9]* 将匹配pt值为数字的所有分区
  • 5: 分区字段的值支持时间匹配,匹配规则: pt=包含格式化时间的分区列值||时间间隔表达式。如ds=%Y%m%d || -1 days,表示分区字段为ds,格式为20150510,需要访问1天前的数据。
  • 5.1 格式化时间参数支持标准的时间格式参数,如下表
  • 5.2 时间间隔表达式支持 +/- n week|weeks|day|days|hour|hours|minute|minutes|second|seconds|microsecond|microseconds, +号任务创建时间的表示n周/天/小时/分钟/秒/毫秒后,-号表示任务创建时间的表示n周/天/小时/分钟/秒/毫秒前。
  • 5.3 系统默认会对所有过滤规则,按照+0 days进行时间参数替换,因此,需要注意的是,用于过滤的字段值不能包含下面这些字符串作为普通的字符串参数,如星期三创建的任务,pt=%abc 将匹配pt的值为Wedbc的分区,而不是pt=%abc的分区。
    1. %a: 星期的简写。如 星期三为Wed
    2. %A: 星期的全写。如 星期三为Wednesday
    3. %b: 月份的简写。如4月份为Apr
    4. %B: 月份的全写。如4月份为April
    5. %c: 日期时间的字符串表示。(如: 04/07/10 10:43:39)
    6. %d: 日在这个月中的天数(是这个月的第几天)
    7. %f: 微秒(范围[0,999999])
    8. %H: 小时(24小时制,[0, 23])
    9. %I: 小时(12小时制,[0, 11])
    10. %j: 日在年中的天数 [001,366](是当年的第几天)
    11. %m: 月份([01,12])
    12. %M: 分钟([00,59])
    13. %p: AM或者PM
    14. %S: 秒(范围为[00,61],为什么不是[00, 59],参考python手册~_~)
    15. %U: 周在当年的周数当年的第几周),星期天作为周的第一天
    16. %w: 今天在这周的天数,范围为[0, 6],6表示星期天
    17. %W: 周在当年的周数(是当年的第几周),星期一作为周的第一天
    18. %x: 日期字符串(如:04/07/10)
    19. %X: 时间字符串(如:10:43:39)
    20. %y: 2个数字表示的年份
    21. %Y: 4个数字表示的年份
    22. %z: 与utc时间的间隔 (如果是本地时间,返回空字符串) 。
    4 . 选择数据同步并发控制机制(目前仅“内网杭州”区域可见)

当用户勾选【使用done文件】后,OpenSearch支持用户通过上传done文件的方式控制系统拉取全量数据的时机,保证全量数据的完整性。系统在开始从odps拉全量数据之前会先判断一下当天的done文件是否存在,如果不存在则等待,默认等待1小时后超时。

  • 用户需从odps官网下载odps clt安装包
  • 用户需要具有所在project空间的CreateResource权限;
  • 安装后在用户程序中运行如下命令:其中done文件的命名规则为$prefix_%Y-%m-%d。$prefix: 文件名前缀,默认为表名,%Y-%m-%d:索引重建任务日期,系统定时任务目前支持的最小粒度为1天。
    1. odpscmd –u accessid –p accesskey --project=<prj_name> –e "add file <done file>;"
  • done文件内容为json格式,目前仅需包含如下内容,用于指定该批全量数据的时间戳(毫秒)(该时间戳表示需要回溯的增量数据时间点,如果不配置则默认从索引重建任务开始时间追加数据。如,全量数据是前一天的,odps处理完毕后2点,OpenSearch定时任务为2:30,则done文件需要指定为当天0点的毫秒值,系统会追加0点后的增量,保证数据完整性;否则会从2:30开始追加,这样0:00~2:30增量会丢失。当然,若没有增量,则无需配置该时间戳):
    1. {
    2. "timestamp":"1234567890000"
    3. }

RDS配置

云数据库(Relational Database Service,即关系型数据库服务,简称RDS)是阿里云对外提供的一种即开即用、稳定可靠、可弹性伸缩的在线数据库服务(了解RDS )。

OpenSearch针对RDS数据源支持如下功能(暂不支持DRDS):

  • 目前只支持Mysql类型的实例
  • 支持手动/定时拉取指定数据库指定表的全量数据
  • 支持增量实时同步(默认勾选)
  • 支持将多个实例中多个数据库中多个源表数据横向合并到一个OpenSearch目的表
  • 支持数据字段转换插件
  • 支持全量/增量过滤条件
  • 支持部分分表名正则匹配

配置说明

在创建应用->配置数据源或者应用管理-gt;数据源都可以进行rds数据源的配置。步骤如下:1 . 在“数据来源”中选择RDS,点击“添加数据”:

2 . 配置数据源信息

插件名称 说明
实例ID RDS数据库的实例ID(不是名称),可以在RDS控制台中获取(大小写敏感),暂不支持只读实例
数据库名 该实例下需要连接的数据库名(大小写不敏感)
表名 该数据库下需要访问的表名(大小写敏感),支持table_name[start-end]、table_name*的分表方式,如table_[00-07]、table_[0-7]等
过滤条件 该过滤条件会同时作用于全量和增量数据(如果开启同步),支持如下格式:数据库字段 OP(<、>、<=、>=、=、!=) 数值。多个过滤条件使用英文逗号(,)分隔,表示且的关系(暂不支持或的关系)。
用户名 数据库只读账号,用于获取数据库表模式及全量数据(大小写敏感且具有只读权限)
密码 只读帐户对应的密码
数据自动同步 是否自动同步用户数据库的增量数据
授权 对OpenSearch获取RDS数据做授权操作,在用户设置了IP白名单的情况下,OpenSearch会将所用IP添加到用户白名单中。若不勾选授权,则“连接数据”不会高亮显示。

OpenSearch的全量数据过滤方式为将过滤条件直接增加在SQL语句的where条件中, 如果应用无需使用增量数据,过滤条件数值部分可以替换为表达式,与数据库中支持的表达式一致。

3 . 配置完成后,点击“连接数据”,OpenSearch会尝试连接,并根据具体情形给出结果提示:

提示信息 处理方法
当前用户的当前区域没有此RDS实例 请检查实例ID是否正确并确保用户RDS服务所在的区域与OpenSearch应用的区域保持一致;如果一致但仍然报错可提工
连接RDS服务失败 请检查RDS连接串是否正确包括实例ID、数据库名、用户名、密码
当前RDS数据库下没有此表 请检查表名填写是否正确/RDS数据库中是否确实存在该表

4 . 若连接成功,则进行字段配置,OpenSearch会自动获取表字段。

注意事项

  • RDS支持内/外网的域名切换,OpenSearch对rds数据获取均不收取任何流量费用;
  • OpenSearch目前仅支持从主库拉取全量数据,建议用户根据业务繁忙情况选择低峰期数据导入操作。
  • 对于RDS表中的datetime及timestamp类型系统会自动转化为毫秒数,请将对应OpenSearch字段类型设置为INT64。
  • truncate命令暂不支持,需要删除数据请使用delete命令;
  • 系统要求主键是唯一的,对于分表情况下,如果各个分表主键有重复,可以对OpenSearch主键字段使用StringCatenateExtractor插件,来源字段为”pk,$table”(其中pk请替换为rds表中主键字段,$table为默认系统变量,表示当前表名)拼接字符为“-”(可自定义)。如rds表为my_table_0,主键字段值为“123456”,那么拼接后的新主键值为“123456-my_table_0”。

最后更新:2016-11-23 16:04:03

  上一篇:go 应用容量__应用基本配置_产品使用手册_开放搜索-阿里云
  下一篇:go 索引重建__应用基本配置_产品使用手册_开放搜索-阿里云