為 Amazon CloudSearch 準備您的資料 - Amazon CloudSearch

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

為 Amazon CloudSearch 準備您的資料

您必須將資料格式化為 JSON 或 XML,資料才能上傳至您的搜尋網域以編製索引。您希望能夠接收做為搜尋結果的每個項目都是以一份文件表示。每份文件都具有獨一無二的文件 ID 和一個或多個欄位,其中包含您要搜尋及由結果傳回的資料。這些文件欄位將用於填入您為自身網域所設定的各個索引欄位。如需詳細資訊,請參閱configure indexing options

Creating Document Batches會說明如何將您的資料格式化。如需 Amazon CloudSearch JSON 和 XML 結構描述的詳細說明,請參閱 Document Service API

將文件資料映射至 Amazon CloudSearch 中的索引欄位

若要填入索引中的欄位,Amazon CloudSearch 會從對應的文件欄位讀取資料。您的文件資料所指定的每個欄位都必須由您的索引選項加以設定。文件可以包含為網域設定的欄位子集,每個文件都不必包含所有欄位。此外,您也可透過在各個欄位間複製資料,將資料填入索引中的其他欄位。如此您便能夠為各欄位設定不同的選項,以不同的方式使用同一份來源資料。

陣列欄位 (如 text-array) 最多可包含 1000 個值。在搜尋期間,若其中任一個值符合搜尋查詢,文件將傳回為命中項目。

在 Amazon CloudSearch 中建立文件批次

重要

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

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

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

您將建立文件批次以描述您想要供予搜尋的資料。當您傳送文件批次至網域後,系統將依照該網域的索引選項自動對其資料編製索引。Amazon CloudSearch 主控台可以從各種來源文件自動產生文件批次。

文件批次是一組新增和刪除操作,各項操作代表了您希望新增、更新或從網域刪除的文件。批次的描述格式可以是 JSON 或 XML。批次大小及文件大小的上限請參閱了解 Amazon CloudSearch 限制

為求獲得最佳的上傳效能,請將新增和刪除操作分組為接近批次大小上限的批次。若向文件服務提交大量的單一文件批次,您所做的變更在搜尋結果中顯現所需的時間將會增加。如果您有大量資料需要上傳,則可以平行傳送多個批次。您所能使用的同時上傳工具數目視搜尋執行個體類型而定。您可以透過為網域設定所需的執行個體類型選項,預先調整大批上傳的規模。如需詳細資訊,請參閱在 Amazon CloudSearch 中設定擴展選項

對於批次中的每份文件,您必須指定:

  • 您想要執行的操作:add (新增) 或 delete (刪除)。

  • 文件獨一無二的 ID。文件 ID 可以包含任何字母或數字以及下列字元:_ - = # ; : / ? @ &。 文件 IDs 長度必須至少為 1 個字元,且不可超過 128 個字元。

  • 各個文件欄位的名稱值組。指定 latlon 欄位的值時,請指定經緯度以逗號分隔的清單,例如 "location_field": "35.628611,-120.694152"。以 JSON 指定文件時,欄位的值不得為 null (但您可以完全省略該欄位)。

例如,以下 JSON 批次將新增一份文件並刪除某份文件:

[ {"type": "add", "id": "tt0484562", "fields": { "title": "The Seeker: The Dark Is Rising", "directors": ["Cunningham, David L."], "genres": ["Adventure","Drama","Fantasy","Thriller"], "actors": ["McShane, Ian","Eccleston, Christopher","Conroy, Frances", "Crewson, Wendy","Ludwig, Alexander","Cosmo, James", "Warner, Amelia","Hickey, John Benjamin","Piddock, Jim", "Lockhart, Emma"] } }, {"type": "delete", "id": "tt0484575" } ]

格式為 XML 的同一批次如下所示:

<batch> <add id="tt0484562"> <field name="title">The Seeker: The Dark Is Rising</field> <field name="directors">Cunningham, David L.</field> <field name="genres">Adventure</field> <field name="genres">Drama</field> <field name="genres">Fantasy</field> <field name="genres">Thriller</field> <field name="actors">McShane, Ian</field> <field name="actors">Eccleston, Christopher</field> <field name="actors">Conroy, Frances</field> <field name="actors">Ludwig, Alexander</field> <field name="actors">Crewson, Wendy</field> <field name="actors">Warner, Amelia</field> <field name="actors">Cosmo, James</field> <field name="actors">Hickey, John Benjamin</field> <field name="actors">Piddock, Jim</field> <field name="actors">Lockhart, Emma</field> </add> <delete id="tt0484575" /> </batch>

Amazon CloudSearch 只有在批次中的所有文件都有效時,才會接受批次。您可以使用 xmllintjsonlint 等工具,驗證 JSON 或 XML 資料的有效性。

JSON 和 XML 批次均只能包含有效 XML 格式的 UTF-8 字元。有效字元包括定位字元 (0009)、歸位字元 (000D) 和換行字元 (000A) 等控制字元,以及 Unicode 和 ISO/IEC 10646 的合法字元。FFFE、FFFF 及代理字組 D800–DBFF 和 DC00–DFFF 皆屬無效,將會造成錯誤 (如需詳細資訊,請參閱可擴展標記語言 (XML) 1.0 (第五版))。您可以使用如下的正規運算式比對無效字元,從而將其移除:/[^\u0009\u000a\u000d\u0020-\uD7FF\uE000-\uFFFD]/

將資料格式化為 JSON 時,欄位值之內的引號 (") 和反斜線 (\) 必須用反斜線逸出。例如:

"title":"Where the Wild Things Are" "isbn":"0-06-025492-0" "image":"images\\covers\\Where_The_Wild_Things_Are_(book)_cover.jpg" "comment":"Sendak's \"Where the Wild Things Are\" is a children's classic."

將資料格式化為 XML 時,欄位值之內的 & 符號和小於符號 (<) 必須用相應的實體參考 (&amp;&lt;) 代表。

例如:

<field name="title">Little Cow &amp; the Turtle</field> <field name="isbn">0-84466-4774</field> <field name="image">images\covers\Little_Cow_&amp;_the_Turtle.jpg</field> <field name="comment">&lt;insert comment></field>

如果您有一大段由使用者產生的內容,也可考慮用 CDATA 區段包裝整個欄位,而不是將每個出現的符號替換為實體參考。例如:

<field name="comment"><![CDATA[Monsters & mayhem--what's not to like! ]]>

在 Amazon CloudSearch 中新增和更新文件

新增操作指定了您希望添加到索引的新文件或者是想要更新的現有文件。

新增或更新文件時,您要指定文件的 ID 以及該文件包含的所有欄位。您不需要為每個文件指定每個設定的欄位,文件可包含已設定欄位的子集。不過,文件中的各欄位都必須對應到針對網域所設定的某個欄位。

新增文件至搜尋網域
  1. 指定新增操作,其內含您要新增的該份文件的 ID 以及您希望能夠搜尋或隨結果傳回的各個欄位。文件若已存在,新增操作將予以取代 (您無法更新所選欄位,文件將由新版本覆寫)。例如,以下操作會新增 tt0484562 這份文件:

    { "type": "add", "id": "tt0484562", "fields": { "title": "The Seeker: The Dark Is Rising", "directors": ["Cunningham, David L."], "genres": ["Adventure","Drama","Fantasy","Thriller"], "actors": ["McShane, Ian","Eccleston, Christopher","Conroy, Frances", "Crewson, Wendy","Ludwig, Alexander","Cosmo, James", "Warner, Amelia","Hickey, John Benjamin","Piddock, Jim", "Lockhart, Emma"] } }
  2. 將此新增操作納入文件批次,然後上傳該批次至您的網域。您可以透過 Amazon CloudSearch 主控台上傳資料,或直接將請求發佈到網域的文件服務端點。如需詳細資訊,請參閱upload documents

在 Amazon CloudSearch 中刪除文件

刪除操作指定了您想要從網域的索引移除的文件。文件一旦刪除,便無法再供搜尋或隨結果傳回。

當發佈更新要刪除文件時,您必須指定欲刪除的每份文件。

如果您的網域已向上擴展以容納您的索引大小,而且您刪除了大量文件,則下次重建完整索引時,網域會向下擴展。雖然索引會定期重建,但為了盡快縮減規模,您可以在刪除文件完成後明確執行索引

注意

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

從搜尋網域刪除文件
  1. 指定刪除操作,其內含您要移除的該份文件的 ID。例如,以下操作會移除 tt0484575 文件:

    { "type": "delete", "id": "tt0484575" }
  2. 將此刪除操作納入文件批次,然後上傳該批次至您的網域。您可以透過 Amazon CloudSearch 主控台上傳批次,或直接將請求發佈到網域的文件服務端點。如需詳細資訊,請參閱upload documents

  3. 刪除操作會從索引中移除文件,這些文件不會出現在搜尋結果中,但若要完全從 Amazon CloudSearch 刪除,您也必須重建索引

處理 Amazon CloudSearch 的來源資料

若要上傳資料以供編製索引,您必須將資料格式化為 JSON 或 XML。Amazon CloudSearch 主控台提供一種方法,可從多種常見檔案類型自動產生格式正確的 JSON 或 XML:CSV、文字和 HTML。您也可以處理針對 Amazon CloudSearch 2011-02-01 API 格式化的批次,將其轉換為 2013-01-01 格式。

對於大多數檔案類型,每個來源檔案在系統產生的 JSON 或 XML 中都是以單獨的文件表示。如果檔案有提供中繼資料,中繼資料將對應至相應的文件欄位;經由文件中繼資料所產生的欄位因檔案類型而異。來源檔案的內容將剖析為單個文字欄位。若檔案所包含的資料超過 1 MB,對應至該文字欄位的資料會被截斷,以使文件不超過 1 MB。

CSV 檔案的處理方式有所不同。處理 CSV 檔案時,Amazon CloudSearch 會使用第一列的內容來定義文件欄位,並為每一列建立個別的文件。若某一欄的標頭名為 docid,該欄內的值將做為文件 ID。必要時,docid 值會經過標準化以符合允許的字元集。文件 ID 可以包含任何字母或數字以及下列字元:_ - = # ; : / ? @ &。 如果沒有點狀資料欄,則會根據檔案名稱和資料列編號為每個文件產生唯一的 ID。

若您上傳多種類型的檔案,CSV 檔案將逐列進行剖析,非 CSV 檔案則會視為個別的文件。

注意

目前,系統只會剖析 CSV 檔案以自動擷取自訂欄位資料並產生多份文件。

您也可以處理存放在 DynamoDB 中的資料。Amazon CloudSearch 代表從資料表讀取的每個項目,做為個別的文件。

使用 Amazon CloudSearch 主控台處理來源資料

當您透過 Amazon CloudSearch 主控台上傳來源文件或 DynamoDB 項目時,它們會自動轉換為 Amazon CloudSearch JSON 格式。您可以使用主控台一次上傳多達 5 MB 的資料。您也可選擇下載由系統產生的 JSON 檔案。如需如何透過主控台上傳資料的詳細資訊,請參閱 upload documentsUploading DynamoDB Data