將搜尋請求提交至 Amazon CloudSearch 網域 - Amazon CloudSearch

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

將搜尋請求提交至 Amazon CloudSearch 網域

我們建議您使用其中一個 AWS 開發套件或AWS CLI提交搜尋請求。SDK 並為您AWS CLI處理請求簽名,並提供執行所有 Amazon CloudSearch 動作的簡便方法。您也可以使用 Amazon CloudSearch 主控台中的搜尋測試器來搜尋資料、瀏覽結果,以及檢視產生的請求 URL 以及 JSON 和 XML 回應。如需詳細資訊,請參閱 使用搜尋測試器進行搜尋

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

  • IP 位址實會變更:您網域的 IP 位址可能會隨時間變更,因此請務必快取主控台中所示的端點,並由aws cloudsearch describe-domains指令傳回,而非 IP 位址。您也應該定期將端點 DNS 重新解析為 IP 位址。如需詳細資訊,請參閱針對 DNS 名稱查閱設定 JVM TTL

例如,下列要求會提交wolverine使用的簡單文字搜尋,AWS CLI並只傳回相符文件的 ID。

aws cloudsearchdomain --endpoint-url http://search-movies-y6gelr4lv3jeu4rvoelunxsl2e.us-east-1.cloudsearch.amazonaws.com search --search-query wolverine --return _no_fields { "status": { "rid": "/rnE+e4oCAqfEEs=", "time-ms": 6 }, "hits": { "found": 3, "hit": [ { "id": "tt1430132" }, { "id": "tt0458525" }, { "id": "tt1877832" } ], "start": 0 } }

默認情況下,Amazon CloudSearch 返回 JSON 響應。您可以通過指定format參數獲取 XML 格式化的結果。回應格式的設定僅會影響到對於成功請求的回應。錯誤回應的格式取決於錯誤的源頭。搜尋服務傳回的錯誤一律會以 JSON 傳回。因為伺服器逾時和其他要求路由問題造成的 5xx 錯誤會以 XML 格式傳回。

注意

AWS 開發套件會以陣列形式傳回欄位。單值欄位會以具有一個元素的陣列傳回,例如:

"fields": { "plot": ["Katniss Everdeen reluctantly becomes the symbol of a mass rebellion against the autocratic Capitol."] }

基於開發和測試目的,您可以允許匿名存取網域的搜尋服務,並將未簽署的 HTTP GET 或 POST 要求直接提交至網域的搜尋端點。在生產環境中,將網域的存取限制為特定 IAM 角色、群組或使用者,並使用 AWS 開發套件或AWS CLI提交已簽署的請求。如需控制 Amazon 存取權的相關資訊 CloudSearch,請參閱configure access policies。如需請求簽署的詳細資訊,請參閱簽署 AWS API 請求

您可以使用任何想要將 HTTP 要求直接傳送至網域搜尋端點的方法,您可以直接在網頁瀏覽器中輸入要求 URL、使用 cURL 提交要求,或使用您最愛的 HTTP 程式庫產生 HTTP 呼叫。若要指定搜尋條件,請指定查詢字串,以指定搜尋的限制條件,以及您要在回應中取回的內容。查詢字串必須以 URL 編碼。通過 GET 提交的搜索請求的最大大小是 8190 字節,包括 HTTP 方法,URI 和協議版本。您可以使用 HTTP POST 提交較大的要求;不過,請記住,處理大型、複雜的要求需要較長的時間,而且更有可能逾時。如需詳細資訊,請參閱 在 Amazon 中調整搜索請求性能 CloudSearch

例如,下列要求會將結構化查詢提交至search-movies-rr2f34ofg56xneuemujamut52i.us-east-1.cloudsearch.amazonaws.com網域,並取得title欄位的內容。

http://search-movies-rr2f34ofg56xneuemujamut52i.us-east-1.cloudsearch. amazonaws.com/2013-01-01/search?q=(and+(term+field%3Dtitle+'star') (term+field%3Dyear+1977))&q.parser=structured&return=title
重要

查詢字串中的特殊字元必須以 URL 編碼。例如,您必須將結構化查詢中的=運算子編碼為%3D(term+field%3Dtitle+'star')。如果您在提交搜尋要求時未對特殊字元進行編碼,就會收到InvalidQueryString錯誤訊息。