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類型的欄位(若分隔字元為不可見字元,需要使用unicode字元來標識,如\u001D) | 資料來源內容為: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”>OpenSearch< /div>,使用外掛程式後,會解析為“OpenSearch”。 |
最佳實務參考:MultiValueSpliter外掛程式的設定。