閱讀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 索引重建__應用基本配置_產品使用手冊_開放搜索-阿裏雲