

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

# 將資料上傳至 Amazon CloudSearch 網域
<a name="uploading-data"></a>

**重要**  
將資料上傳至 Amazon CloudSearch 網域之前，請遵循下列準則：  
在上傳文件之前，將文件分組為*批次*。持續上傳僅包含一個文件的批次，會對 Amazon CloudSearch 處理更新的速度產生巨大的負面影響。反之，建立盡可能接近限制的批次，並降低上傳頻率。如需批次大小上限和上傳頻率的詳細資訊，請參閱 [了解 Amazon CloudSearch 限制](limits.md)。
網域的文件和搜尋端點在網域生命週期當中會保持不變。應當對端點進行快取處理，而非在每次上傳或搜尋請求之前擷取端點。在每個請求`DescribeDomains`之前呼叫 `aws cloudsearch describe-domains`或 查詢 Amazon CloudSearch 組態服務可能會導致您的請求受到調節。

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

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

**若要上傳資料至您的網域，資料必須格式化為有效的 JSON 或 XML 批次。**每份文件中指定的各欄位都必須對應到針對網域所設定的索引欄位。不過，文件不一定要包含每個設定的索引欄位。如需如何建立文件批次的相關資訊，請參閱[準備您的資料](preparing-data.md)。如需如何為網域設定索引欄位的相關資訊，請參閱[設定索引欄位](configuring-index-fields.md)。

您要支付的費用是按照您上傳至搜尋網域的文件批次總數計算，包括內含刪除操作的批次。如需 Amazon CloudSearch 定價的詳細資訊，請參閱 https：//[aws.amazon.com/cloudsearch/pricing/](https://aws.amazon.com/cloudsearch/pricing/)。

您可以使用 [Amazon CloudSearch console](#uploading-data-console) AWS CLI或 將文件批次提交至網域[posting it directly](#uploading-data-api)的文件服務端點。

如需文件服務 API 的詳細資訊，請參閱[文件服務 API 參考](document-service-api.md)。

**Topics**
+ [將文件上傳請求提交至 Amazon CloudSearch 網域](submitting-doc-requests.md)
+ [Amazon CloudSearch 中的大量上傳](#bulk-uploads)
+ [Amazon CloudSearch console](#uploading-data-console)
+ [使用 上傳資料 AWS CLI](#uploading-data-clt)
+ [posting it directly](#uploading-data-api)

# 將文件上傳請求提交至 Amazon CloudSearch 網域
<a name="submitting-doc-requests"></a>

**重要**  
將資料上傳至 Amazon CloudSearch 網域之前，請遵循下列準則：  
在上傳文件之前，將文件分組為*批次*。持續上傳僅包含一個文件的批次，會對 Amazon CloudSearch 處理更新的速度產生巨大的負面影響。反之，建立盡可能接近限制的批次，並降低上傳頻率。如需批次大小上限和上傳頻率的詳細資訊，請參閱 [了解 Amazon CloudSearch 限制](limits.md)。
網域的文件和搜尋端點在網域生命週期當中會保持不變。應當對端點進行快取處理，而非在每次上傳或搜尋請求之前擷取端點。在每個請求`DescribeDomains`之前呼叫 `aws cloudsearch describe-domains`或 查詢 Amazon CloudSearch 組態服務可能會導致您的請求受到調節。

建議使用其中一個 AWS SDKs或 AWS CLI 來提交文件上傳請求。SDKs和 會為您 AWS CLI 處理請求簽署，並提供執行所有 Amazon CloudSearch 動作的簡單方法。您也可以使用 Amazon CloudSearch 主控台上傳個別批次，並從 DynamoDB 或 S3 匯入資料。

例如，下列請求會使用 上傳批次 AWS CLI。

```
aws cloudsearchdomain --endpoint-url http://doc-movies-y6gelr4lv3jeu4rvoelunxsl2e.us-east-1.cloudsearch.amazonaws.com upload-documents --content-type
 application/json --documents movie-data-2013.json
```

基於開發和測試目的，您可以允許匿名存取網域的文件服務，並將未簽署的 HTTP POST 請求直接提交至網域的文件服務。在生產環境中，將您的網域存取權限制為特定 IAM 角色、群組或使用者，並提交已簽署的請求。如需控制 Amazon CloudSearch 存取的資訊，請參閱 [設定 Amazon CloudSearch 的存取](configuring-access.md)。如需請求簽署的詳細資訊，請參閱[簽署 AWS API 請求](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html)。

例如，下列 POST 請求會將 JSON 格式的文件批次上傳至網域端點 https：//doc-movies-123456789012.us-east-1.cloudsearch.amazonaws.com。

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

## Amazon CloudSearch 中的大量上傳
<a name="bulk-uploads"></a>

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

進行大批上傳：
+ 將所需的執行個體類型設為比預設的 `search.small` 更大的執行個體類型。您可以使用的上傳執行緒數目取決於您的網域所使用的搜尋執行個體類型，以及您的資料性質和索引選項。較大的執行個體類型有較高的上傳容量。若嘗試平行上傳多個批次至 `search.small` 執行個體，通常會導致頻繁地出現 504 或 507 錯誤。如需如何設定所需執行個體類型的詳細資訊，請參閱[在 Amazon CloudSearch 中設定擴展選項](configuring-scaling-options.md)。
+ 一旦您的組態變更生效，即開始上傳資料。如果您遇到頻繁地出現 5xx 錯誤的情況，就表示您需要降低上傳速率或切換到更大的執行個體類型。若您已是使用最大的執行個體類型，則可增加所需的分割區計數以進一步增加上傳容量。
**重要**  
如果您在網域狀態為 PROCESSING 時提交大量更新，更新內容套用到搜尋索引所需的時間將會增加。為避免發生這類更新延遲情況，請等到您的網域處於 ACTIVE 狀態後再開始進行大批上傳。
+ 當您完成大批更新後，即可將所需的執行個體類型變更回較小的執行個體類型。如果您的索引適用於較小的類型，Amazon CloudSearch 會自動縮減您的網域。Amazon CloudSearch 不會擴展至小於您網域所設定之所需執行個體類型的執行個體類型。

 對於少於 1 GB 或少於一百萬 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 的索引，請提交[服務提高限制請求](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-cloudsearch-partitions-and-instances)。

## 使用 Amazon CloudSearch 主控台上傳資料
<a name="uploading-data-console"></a>

在 Amazon CloudSearch 主控台中，您可以從本機檔案系統或 Amazon S3 從網域儀表板上傳資料到您的網域。主控台在上傳過程中可自動將以下類型的檔案轉換成文件批次：
+ JSON 或 XML 格式的文件批次 (.json、.xml)
+ 逗號分隔值 (.csv)
+ 文字文件 (.txt)

您也可以從 DynamoDB 資料表轉換和上傳項目。如需詳細資訊，請參閱[Uploading DynamoDB Data](searching-dynamodb-data.md#searching-dynamodb-data-console)。

**注意**  
若要從 Amazon S3 或 DynamoDB 上傳資料，您必須具有存取您要上傳之服務和資源的許可。如需詳細資訊，請參閱[使用儲存貯體政策與使用者政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingIAMPolicies.html)及[使用 IAM 控制對 DynamoDB 資源的存取](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/UsingIAMWithDDB.html)。

CSV 檔案將逐列進行剖析，並為每一列產生單獨的文件。所有其他類型的檔案均視為單一文件。如需自動產生文件批次的詳細資訊，請參閱[準備您的資料](preparing-data.md)。

**傳送資料至網域以編製索引**

1. 開啟位於 https：//[https://console.aws.amazon.com/cloudsearch/home](https://console.aws.amazon.com/cloudsearch/home) 的 Amazon CloudSearch 主控台。

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

1. 選擇您的網域名稱以開啟網域組態。

1. 選擇**動作**、**上傳文件**。

1. 選取您要上傳至網域的資料所在位置：
   + 本機機器
   + Amazon S3
   + Amazon DynamoDB
   + 範例資料

   如果您所上傳的資料並非文件批次的格式，系統將在上傳過程中自動予以轉換。
**注意**  
 如果批次無效，Amazon CloudSearch 會將內容轉換為包含單一內容欄位和一般中繼資料欄位的有效批次。由於這些欄位通常並非供網域設定使用，您將收到指出欄位不存在的錯誤。

1. 上傳您的資料。

   1. 如果您要上傳本機檔案，請選取**選擇檔案** （以尋找要上傳的檔案）。

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

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

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

1. 選擇**繼續**。

1. 檢閱要上傳的文件，然後選擇**上傳文件**。

1. 在**上傳摘要**中，如果文件批次已從您的資料自動產生，您可以選擇**下載產生的文件批次**以取得它。選擇**關閉**以返回網域儀表板。

## 使用 上傳資料 AWS CLI
<a name="uploading-data-clt"></a>

您可以使用 `aws cloudsearch upload-documents`命令將文件批次傳送至您的搜尋網域。如需安裝和設定 的詳細資訊 AWS CLI，請參閱 [AWS Command Line Interface 使用者指南](https://docs.aws.amazon.com/cli/latest/userguide/)。

**傳送文件批次至網域以編製索引**
+ 執行 `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 網域的文件服務端點
<a name="uploading-data-api"></a>

您要使用 `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"
```