OpenSearch中的数据,既支持通过API/SDK/上传界面的方式导入,也支持直接从已有的云数据库进行同步。如果选择通过API或SDK来上传数据,可以参照API手册直接上传,不支持本文中的插件配置。如果选择同步云端数据的方式,则需要将数据源的相关信息在控制台中进行配置。目前系统提供了若干的数据处理插件可以实现一些简单的数据转化操作,在配置数据源字段对应关系(API方式上传数据的暂不支持,需要用户推送前处理好)可以选择使用。
一张OpenSearch表可以支持多个RDS及Polardb来源表(如分库分表的场景),但是ODPS源只能配置一个,如需多个ODPS来源表,请先将数据合并成一张表后再导入。
数据处理插件
系统中某些搜索功能或者特征函数需要特殊的字段类型支持。如Array类型字段,需要通过如下插件来转化,用户无法直接输入。
注意:该插件在数据源配置处配置,而不是定义应用结构的时候。只有配置了数据源才能设置插件。
配置项名称 | 说明 | 示例 |
JsonKeyValueExtractor | 从JSON格式的来源字段中提取指定的键值,提取出来的键值作为目标表字段的内容,只能抽取某个key中的值。 | {“title”:”the content”,”body”:”the content”} 中提取出键值title的内容,若内容为JsonArray格式,则将转化为系统中Array类型字段内容“请确保提取出来的键值和目标表字段类型一致,否则对应的数据会丢失”。此处的JsonArray格式,是指符合我们这边定义的JsonArray格式。例如 literal_array字段类型:{“tags”:[“a”,”b”,”c”]} 或 int_array字段类型: {“tags”:[1,2,3]} |
MultiValueSpliter | 将来源字段按照分隔符分割成多个值,分割后的内容作为目标表字段的内容,目标表字段必须是配置为ARRAY类型的字段 。 注意:
| 数据源内容为:1,2,3,指定分隔符为 “,” 直接输入一个英文的逗号即可 |
KeyValueExtractor | 从KV格式的来源字段中提取指定的键值,提取出来的键值作为目标表字段的内容,只能抽取某个key中的值。分隔符可以不填 | 实际内容为:key1:value1,value2;key2:value3,键为key1,key2,键分隔符为分号,键值分隔符为冒号,多值分隔符为逗号。如果配置了多值分隔符,则将转化为系统中Array类型字段内容“请确保提取出来的键值和目标表字段类型一致,否则对应的数据会丢失”,若存在2个相同的key,则只会抽取后面的那个key的值。 |
StringCatenateExtractor | 将多个指定字段按照指定的顺序拼接成一个字符串,该插件不支持int字段类型,建议用literal字段类型;字段列表以逗号分隔(字段需来自于目标字段) | 将field1,field2内容按照‘_’组成新的字段内容。另外系统变量$table可以获取当前表名($table只有在配置了分表通配符的情况下才会显示)。 |
HTMLTagRemover | 剔除来源字段中的HTML标签,剔除标签后的内容复制到当前字段,源字段配置为当前字段则做内容替换 | 原文: < div id=”copyright”>开放搜索< /div>,使用插件后,会解析为“开放搜索”。 |
最佳实践参考:MultiValueSpliter插件的设置。