將數據上傳到 Amazon CloudSearch 域 - Amazon CloudSearch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將數據上傳到 Amazon CloudSearch 域

重要

將資料上傳到 Amazon CloudSearch 網域之前,請遵循下列準則:

  • 在上傳文件之前,請先將文件分組成批次。持續上傳僅包含一份文件的批次會對 Amazon CloudSearch 處理更新的速度產生巨大負面影響。相反地,請建立盡可能接近限制的批次,並減少上傳頻率。如需最大批次大小和上傳頻率的詳細資訊,請參閱了解 Amazon CloudSearch 限制

  • 網域的文件和搜尋端點在網域生命週期當中會保持不變。應當對端點進行快取處理,而非在每次上傳或搜尋請求之前擷取端點。透過呼叫aws cloudsearch describe-domains或在每個請求DescribeDomains之前查詢 Amazon CloudSearch 組態服務,可能會導致您的請求受到限制。

您可以建立文件批次來描述要上傳到 Amazon CloudSearch 網域的資料。文件批次是一組新增和刪除操作,各項操作代表了您希望新增、更新或從網域刪除的文件。批次的描述格式可以是 JSON 或 XML。當您上傳文件批次至網域後,系統將依照該網域的索引選項自動對其資料編製索引。

當資料變更時,您可以上傳批次以新增、變更或刪除索引中的文件。Amazon 持續 CloudSearch 套用更新。唯有當您變更了組態而使網域處於 NEEDS INDEXING 狀態或是必須更新建議者時,您的資料才需要明確重新編製索引。

若要上傳資料至您的網域,資料必須格式化為有效的 JSON 或 XML 批次。每份文件中指定的各欄位都必須對應到針對網域所設定的索引欄位。不過,文件不一定要包含每個設定的索引欄位。如需如何建立文件批次的相關資訊,請參閱準備您的資料。如需如何為網域設定索引欄位的相關資訊,請參閱configure indexing options

您要支付的費用是按照您上傳至搜尋網域的文件批次總數計算,包括內含刪除操作的批次。有關 Amazon CloudSearch 定價的更多信息,請參閱 aws.amazon.com

您可以使用 Amazon CloudSearch console或 AWS CLI 向網域提交文件批次,或者 posting it directly 到網域的文件服務端點。

如需文件服務 API 的詳細資訊,請參閱Document Service API

在 Amazon 批量上傳 CloudSearch

文件批次的限制為每 10 秒一個批次且每一批次 5 MB。如需進一步了解,請參閱限制。不過,您可以平行上傳多個批次,藉此縮短資料全部上傳完成所需的時間。

進行大批上傳:

  • 將所需的執行個體類型設為比預設的 search.small 更大的執行個體類型。您可以使用的上傳執行緒數目取決於您的網域所使用的搜尋執行個體類型,以及您的資料性質和索引選項。較大的執行個體類型有較高的上傳容量。若嘗試平行上傳多個批次至 search.small 執行個體,通常會導致頻繁地出現 504 或 507 錯誤。如需如何設定所需執行個體類型的詳細資訊,請參閱在 Amazon 中設定擴展選項 CloudSearch

  • 一旦您的組態變更生效,即開始上傳資料。如果您遇到頻繁地出現 5xx 錯誤的情況,就表示您需要降低上傳速率或切換到更大的執行個體類型。若您已是使用最大的執行個體類型,則可增加所需的分割區計數以進一步增加上傳容量。

    重要

    如果您在網域狀態為 PROCESSING 時提交大量更新,更新內容套用到搜尋索引所需的時間將會增加。為避免發生這類更新延遲情況,請等到您的網域處於 ACTIVE 狀態後再開始進行大批上傳。

  • 當您完成大批更新後,即可將所需的執行個體類型變更回較小的執行個體類型。如果您的索引適合較小的類型,Amazon CloudSearch 將自動縮減您的域名。Amazon 不 CloudSearch 會擴展到小於為您網域設定的所需執行個體類型的執行個體類型。

對於資料少於 1 GB 或少於 100 萬個 1 KB 文件的資料集,小型搜尋執行個體應該就足夠了。若要上傳 1 GB 到 8 GB 之間的資料集,建議您在開始上傳之search.large前將所需的執行個體類型設定為。對於介於 8 GB 到 16 GB 之間的資料集,請從search.xlarge. 對於介於 16 GB 到 32 GB 之間的資料集,請從search.2xlarge. 如果您要上傳的空間超過 32 GB,請選取search.2xlarge執行個體類型並增加所需的分割區計數以容納您的資料集。每個分割區最多可包含 32 GB 的資料。如果您需要更多上傳容量或要編製索引 500 GB 以上,請提交服務增加限制要求。

使用 Amazon CloudSearch 主控台上傳資料

在 Amazon 主 CloudSearch 控台中,您可以從網域儀表板將資料從本機檔案系統或 Amazon S3 上傳到您的網域。主控台在上傳過程中可自動將以下類型的檔案轉換成文件批次:

  • JSON 或 XML 格式的文件批次 (.json、.xml)

  • 逗號分隔值 (.csv)

  • 文字文件 (.txt)

您也可以從 DynamoDB 表格轉換和上傳項目。如需詳細資訊,請參閱 Uploading DynamoDB Data

注意

若要從 Amazon S3 或 DynamoDB 上傳資料,您必須擁有存取服務和要上傳的資源的權限。如需詳細資訊,請參閱使用儲存貯體政策與使用者政策使用 IAM 控制對 DynamoDB 資源的存取

系統會剖析 CSV 檔案, row-by-row 並針對每一列產生單獨的文件。所有其他類型的檔案均視為單一文件。如需自動產生文件批次的詳細資訊,請參閱準備您的資料

傳送資料至網域以編製索引
  1. 在以下位置打開 Amazon CloudSearch 控制台 https://console.aws.amazon.com/cloudsearch/home

  2. 在左側導覽窗格中選擇 Domains (網域)。

  3. 選擇您的域名以打開域配置。

  4. 選擇動作上載文件

  5. 選取您要上傳至網域的資料所在位置:

    • 本機電腦

    • Amazon S3

    • Amazon DynamoDB

    • 範例資料

    如果您所上傳的資料並非文件批次的格式,系統將在上傳過程中自動予以轉換。

    注意

    如果批次無效,Amazon 會將內容 CloudSearch 轉換為包含單一內容欄位和一般中繼資料欄位的有效批次。由於這些欄位通常並非供網域設定使用,您將收到指出欄位不存在的錯誤。

  6. 上傳您的資料。

    1. 如果您要上傳本機檔案,請選取 [選擇檔案] 以尋找要上傳的檔案。

    2. 如果您要從 Amazon S3 上傳物件,請提供要從中上傳的儲存貯體 URI。

    3. 如果您要從 DynamoDB 上傳項目,請選取要從中上傳的表格。若要限制從資料表讀取時可耗用的讀取容量單位,請輸入讀取容量單位百分比上限。若要從特定項目開始讀取,請指定開始雜湊鍵。

    4. 如果您要上傳預先定義的範例資料,請選擇要使用的資料集。

  7. 選擇 繼續

  8. 檢閱要上載的文件,然後選擇「上載文件」。

  9. 在「上載摘要」中,如果已從資料自動產生文件批次,您可以選擇「下載產生的文件批次」來取得。選擇 [關閉] 以返回網域儀表板。

使用 AWS CLI 上傳資料

您可以使用aws cloudsearch upload-documents指令將文件批次傳送至搜尋網域。如需有關安裝與設定 AWS CLI 的資訊,請參閱 AWS Command Line Interface 使用者指南

傳送文件批次至網域以編製索引
  • 執行 aws cloudsearchdomain upload-documents 命令,將所需批次上傳至您的網域:

    aws cloudsearchdomain upload-documents --endpoint-url http://doc-movies-y6gelr4lv3jeu4rvoelunxsl2e.us-east-1.cloudsearch.amazonaws.com --content-type application/json --documents document-batch.json { "status": "success", "adds": 5000, "deletes": 0 }

通過 HTTP 將文檔發佈到 Amazon CloudSearch 域的文檔服務端點

您要使用 documents/batch 資源將文件批次發佈至您的網域,以便新增、更新或移除文件。例如:

curl -X POST --upload-file movie-data-2013.json doc-movies-123456789012.us-east-1.cloudsearch.amazonaws.com/2013-01-01/documents/batch --header "Content-Type:application/json"