準備您的資料以用於 Amazon CloudSearch - Amazon CloudSearch

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

準備您的資料以用於 Amazon CloudSearch

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

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

在 Amazon CloudSearch Search 中將文件資料對應到索引欄位

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

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

在 Amazon CloudSearch ch 中建立文件批次

重要

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

  • 將文件群組到批次,然後再上傳它們。持續上傳只包含一份文件的批次會對 Amazon CloudSearch 處理更新的速度產生巨大的負面影響。相反地,建立盡可能接近限制的批次,並減少上傳頻率。如需有關批次大小上限和上傳頻率上限的詳細資訊,請參閱了解 Amazon CloudSearch 限制

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

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

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

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

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

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

  • 文件獨一無二的 ID。文件 ID 可包含任何字母或數字及以下字元:_-= #;:/? @ &. 文件 ID 必須為 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 ch 中刪除文件

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

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

如果您的網域已向上擴充以容納索引大小,而且您刪除了大量文件,則下次重建完整索引時,網域會縮小。雖然索引會定期自動重建,但若要盡快縮小,您可以明確編製索引當您完成刪除文件。

注意

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

從搜尋網域刪除文件
  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 API 適用格式的批次,將其轉換為 2013-01-01 格式。

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

CSV 檔案的處理方式有所不同。處理 CSV 檔案時,Amazon CloudSearch 會使用第一列的內容定義文件欄位,並為後續各列建立單獨的文件。若某一欄的標頭名為 docid,該欄內的值將做為文件 ID。必要時,docid 值會經過標準化以符合允許的字元集。文件 ID 可包含任何字母或數字及以下字元:_-= #;:/? @ &. 如果沒有 docid 欄,則會按照檔案名稱及列號,為每份文件產生獨一無二的 ID。

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

注意

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

您也可以處理 DynamoDB 中儲存的資料。Amazon CloudSearch 會以單獨的文件代表讀取自資料表的每個項目。

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

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