全部產品
Search
文件中心

OpenSearch:OSS + API 資料來源

更新時間:Nov 30, 2024

本文介紹添加表選擇Object Storage Service+API為資料來源時的操作步驟。

添加OSS+API資料來源,需要以下兩步:

  1. 在執行個體對應地區開通OSS服務

  2. 參照添加OSS資料來源中的步驟進行配置。

開通OSS服務

  1. 開通OSS服務

    說明
    • 開通的OSS服務,需要和已購買的OpenSearch服務在同一個地區。

    • 開通OSS服務,需要設定添加opensearch標籤。

    • 召回引擎版不支援無地區屬性的OSS的bucket。

    • 執行新增OSS資料來源操作時,將會自動建立一個服務關聯角色(如已經建立,則不會重複建立)AliyunServiceRoleForSearchEngine,OpenSearch使用此角色來訪問您在其他雲產品中的資源以完成相應功能。

  2. 控制台建立儲存空間

  3. 控制台上傳檔案

  4. 添加opensearch標籤:(key-value 值均為opensearch)

    image.png

添加OSS資料來源

  1. 執行個體詳情>表管理頁,點擊添加表

  2. 表管理介面開始配置表基礎資訊,填寫表名稱,分區數和資料更新資源數:

    引擎表資訊.png

    配置說明

    • 表名稱:可自訂。

    • 資料分區數:表分區不超過256的正整數即可(建議不超過執行個體資料節點數的3倍)。

    • 資料更新資源數:資料更新所用資源數,每個索引預設免費提供2個4核8G的更新資源,超出免費額度的資源將產生費用,詳情可參考召回引擎版國際站計費文檔

  3. 資料同步,配置資料來源,校正通過後,點擊下一步

    資料同步2.png

    • 全量資料來源:選擇Object Storage Service+API。

    • OSS路徑:訪問OSS檔案的路徑,需以/開頭,路徑中不允許包含?、=、&符號,檔案不能放在根目錄,需放在某個檔案夾下然後填寫路徑。

    • OSS儲存空間(Bucket):OSS的Bucket名稱。

    • 資料格式:可選HA3格式JSON格式

    • 資料來源校正:校正通過後可進行下一步。

說明
  • 目錄名必須包含opensearch,或者必須有opensearch:opensearch的標籤,否則將無法讀到資料,且不可包含 = & ?等特殊符號。

  • OSS路徑來源:在建立好的Bucket名稱點擊進入後-建立目錄-選擇建立好的目錄路徑,此處樣本路徑為/opensearch_index_data/:

image.png

  • 儲存空間(Bucket) :OSS的Bucket名稱(來源:在開通的OSS服務Bucket裡使用建立好的Bucket名稱-如下圖所示)

image.png

  1. 欄位配置,配置完成後,點擊下一步:

    image

    案例中配置了2個欄位pk、namespace,範例資料可參考(樣本資料:oss_test.txt):

CMD=add
pk=999000
namespace=0.00.0039257140.0098142860.0039257140.00
pk=999000
namespace=0.00.0039257140

oss中的檔案內容可參考下文中的檔案格式

  1. 索引結構配置,配置完成後,點擊下一步:

    image.png

  2. 確認建立,點擊確認建立後,系統將自動建立配置好的表:

    image.png

  3. 可在變更歷史中查看建立表進度:

    image.png

  4. 當表狀態在使用中時,即可在查詢測試頁面進行查詢測試:

    image.png

檔案格式

檔案是建立索引的資料來源(注意:需要是utf-8的編碼),當前支援HA3與JSON格式。

HA3格式

  • 首先看一個完整的資料檔案standard_sample.data的內容

CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里雲計算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^
CMD=delete^_
PK=12345321^_CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里雲計算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^
CMD=delete^_
PK=12345321^_

可以看到上面的資料檔案中總共有兩個命令,分別是add、delete。每個命令由多行組成,每行都是一個key-value對。 命令與命令之間用'^^\n'分隔,每一對key-value之間以'^_\n'分隔,多值之間以'^]'分隔。下面詳細介紹。

  • 檔案分隔字元定義

C++編碼

ASCII

16進位

描述

(emacs/vi)中的顯示形態

emacs中輸入方法

vi中輸入方法

"\x1F\n"

1F0A

key value分隔字元

^_(接換行)

C-q C-7

C-v C-7

"\x1E\n"

1E0A

命令分隔字元

^^(接換行)

C-q C-6

C-v C-6

"\x1D"

1D

multi value 分隔字元

^]

C-q C-5

C-v C-5

"\x1C"

1C

section weight標誌符

^\

C-q C-4

C-v C-4

"\x1D"

1D

section 分隔字元

^]

C-q C-5

C-v C-5

"\x03"

03

sub doc 欄位分隔符號

^C

C-q C-c

C-v C-c

  • 命令格式定義

  • Add command formatadd命令表示往索引中增加新的內容。add命令第一行必須為CMD=add,後面是該文檔的field,field順序可以與schema中fields順序一致,所有出現的field必須是fields中指定的。

CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里雲計算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=阿里雲計算有限公司^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^
  • Delete command format delete命令表示從索引中刪除指定的內容。delete命令第一"行"必須為CMD=delete,接下來的"行"為index schema中定義屬性為primary key 的field,以及用於partition hash的field,如果兩個field相同,則只需要出現一個field。

CMD=delete^_
PK=12345321^_
^^CMD=delete^_
PK=12345321^_
^^

JSON格式

多條記錄樣本,'\n'表示分行符號,單條記錄不能有分行符號,參考:

{"field_double": ["100.0", "221.123", "500.3333333"], "field_int32": ["100", "200", "300"], "title": "華為 Mate 9 麒麟960晶片 徠卡雙鏡頭", "color": "紅", "empty_int32": "", "price": "3599", "CMD": "add", "nid": "1", "gather_cn_str": "", "desc": ["str1", "str2", "str3"], "brand": "Huawei", "size": "5.9","__subdocs__":[{"sub_pk":"100","sub_field1":"200","sub_field2":["100","200","300"]},{"sub_pk":"200","sub_field1":"200","sub_field2":["100","200","300"]}]}
{"field_double": ["100.0", "221.123", "500.3333333", "100.0", "221.123", "500.3333333"], "field_int32": ["100", "200", "300", "100", "200", "300"], "title": "Huawei/華為 P10 Plus全網通手機", "color": "藍", "empty_int32": "", "price": "4388", "CMD": "add", "nid": "2", "gather_cn_str": "color藍", "desc": ["str1", "str2", "str3", "str1", "str2", "str3"], "brand": "Huawei", "size": "5.5","__subdocs__":[{"sub_pk":"100","sub_field1":"200","sub_field2":["100","200","300"]},{"sub_pk":"200","sub_field1":"200","sub_field2":["100","200","300"]}]}