數(shù)據(jù)源插件說明
OpenSearch中的數(shù)據(jù),既支持通過API/SDK/上傳界面的方式導(dǎo)入,也支持直接從已有的云數(shù)據(jù)庫進(jìn)行同步。如果選擇通過API或SDK來上傳數(shù)據(jù),可以參照API手冊(cè)直接上傳,不支持本文中的插件配置。如果選擇同步云端數(shù)據(jù)的方式,則需要將數(shù)據(jù)源的相關(guān)信息在控制臺(tái)中進(jìn)行配置。目前系統(tǒng)提供了若干的數(shù)據(jù)處理插件可以實(shí)現(xiàn)一些簡單的數(shù)據(jù)轉(zhuǎn)化操作,在配置數(shù)據(jù)源字段對(duì)應(yīng)關(guān)系(API方式上傳數(shù)據(jù)的暫不支持,需要用戶推送前處理好)可以選擇使用。
一張OpenSearch表可以支持多個(gè)RDS及Polardb來源表(如分庫分表的場(chǎng)景),但是ODPS源只能配置一個(gè),如需多個(gè)ODPS來源表,請(qǐng)先將數(shù)據(jù)合并成一張表后再導(dǎo)入。
數(shù)據(jù)處理插件
系統(tǒng)中某些搜索功能或者特征函數(shù)需要特殊的字段類型支持。如Array類型字段,需要通過如下插件來轉(zhuǎn)化,用戶無法直接輸入。
注意:該插件在數(shù)據(jù)源配置處配置,而不是定義應(yīng)用結(jié)構(gòu)的時(shí)候。只有配置了數(shù)據(jù)源才能設(shè)置插件。
配置項(xiàng)名稱 | 說明 | 示例 |
JsonKeyValueExtractor | 從JSON格式的來源字段中提取指定的鍵值,提取出來的鍵值作為目標(biāo)表字段的內(nèi)容,只能抽取某個(gè)key中的值。 | {“title”:”the content”,”body”:”the content”} 中提取出鍵值title的內(nèi)容,若內(nèi)容為JsonArray格式,則將轉(zhuǎn)化為系統(tǒng)中Array類型字段內(nèi)容“請(qǐng)確保提取出來的鍵值和目標(biāo)表字段類型一致,否則對(duì)應(yīng)的數(shù)據(jù)會(huì)丟失”。此處的JsonArray格式,是指符合我們這邊定義的JsonArray格式。例如 literal_array字段類型:{“tags”:[“a”,”b”,”c”]} 或 int_array字段類型: {“tags”:[1,2,3]} |
MultiValueSpliter | 將來源字段按照分隔符分割成多個(gè)值,分割后的內(nèi)容作為目標(biāo)表字段的內(nèi)容,目標(biāo)表字段必須是配置為ARRAY類型的字段(若分隔符為不可見字符,需要使用unicode字符來標(biāo)識(shí),如\u001D) | 數(shù)據(jù)源內(nèi)容為:1,2,3,指定分隔符為 “,” 直接輸入一個(gè)英文的逗號(hào)即可 |
KeyValueExtractor | 從KV格式的來源字段中提取指定的鍵值,提取出來的鍵值作為目標(biāo)表字段的內(nèi)容,只能抽取某個(gè)key中的值。分隔符可以不填 | 實(shí)際內(nèi)容為:key1:value1,value2;key2:value3,鍵為key1,key2,鍵分隔符為分號(hào),鍵值分隔符為冒號(hào),多值分隔符為逗號(hào)。如果配置了多值分隔符,則將轉(zhuǎn)化為系統(tǒng)中Array類型字段內(nèi)容“請(qǐng)確保提取出來的鍵值和目標(biāo)表字段類型一致,否則對(duì)應(yīng)的數(shù)據(jù)會(huì)丟失”,若存在2個(gè)相同的key,則只會(huì)抽取后面的那個(gè)key的值。 |
StringCatenateExtractor | 將多個(gè)指定字段按照指定的順序拼接成一個(gè)字符串,該插件不支持int字段類型,建議用literal字段類型;字段列表以逗號(hào)分隔(字段需來自于目標(biāo)字段) | 將field1,field2內(nèi)容按照‘_’組成新的字段內(nèi)容。另外系統(tǒng)變量$table可以獲取當(dāng)前表名($table只有在配置了分表通配符的情況下才會(huì)顯示)。 |
HTMLTagRemover | 剔除來源字段中的HTML標(biāo)簽,剔除標(biāo)簽后的內(nèi)容復(fù)制到當(dāng)前字段,源字段配置為當(dāng)前字段則做內(nèi)容替換 | 原文: < div id=”copyright”>開放搜索< /div>,使用插件后,會(huì)解析為“開放搜索”。 |
最佳實(shí)踐參考:MultiValueSpliter插件的設(shè)置。