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插件的設置。