Amazon CloudSearch
開発者ガイド (API バージョン 2013-01-01)

Amazon CloudSearch ドメインへの検索リクエストの送信

AWS SDK または AWS CLI のいずれかを使用して、検索リクエストを送信することをお勧めします。SDK と AWS CLI は、リクエスト署名を自動的に処理し、すべての Amazon CloudSearch アクションを簡単に実行できる方法を提供します。また、Amazon CloudSearch コンソールで検索テスターを使用して、データの検索、結果の参照、生成されたリクエストの URL および JSON と XML レスポンスの表示を行うこともできます。詳細については、「検索テスターによる検索」を参照してください。

重要

  • 検索エンドポイントは変更されません。ドメインのドキュメントエンドポイントおよび検索エンドポイントは、ドメインが存在している間変わりません。すべてのアップロードリクエストや検索リクエストの前にエンドポイントを取得するのではなく、エンドポイントをキャッシュに保存してください。各リクエストの前に aws cloudsearch describe-domains または DescribeDomains を呼び出すことによって Amazon CloudSearch 設定サービスにクエリを実行すると、リクエストが調整される可能性があります。

  • IP アドレスは変更されます。したがって、ドメインの IP アドレスは時間が経つと変更される場合があります。IP アドレスよりも、コンソールに表示され aws cloudsearch describe-domains コマンドで返されるエンドポイントをキャッシュすることが重要です。また、エンドポイント DNS を IP アドレスに定期的に再解決する必要もあります。詳細については、「DNS 名参照用の JVM TTL の設定」を参照してください。

たとえば、次のリクエストは AWS CLI を使用して wolverine の単純なテキスト検索を送信し、一致ドキュメントの 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 SDK はフィールドを配列として返します。単一の値のフィールドは、次のように 1 つの要素を持つ配列として返されます。

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

開発とテストの目的で、ドメインの検索サービスへの匿名アクセスを許可し、未署名の HTTP GET または POST リクエストを直接ドメインの検索エンドポイントに送信することができます。本番環境では、ドメインへのアクセスを特定の IAM ユーザー、グループ、ロールに制限し、AWS SDK または AWS CLI を使用して署名付きリクエストを送信します。Amazon CloudSearch へのアクセスの制御方法については、「アクセスポリシーの設定」を参照してください。リクエスト署名の詳細については、「AWS API リクエストのサインアップ」を参照してください。

任意の方法を使用して、HTTP リクエストを直接ドメインの検索エンドポイントに送信することができます。ウェブブラウザにリクエスト URL を直接入力することも、cURL を使用してリクエストを送信することも、好みの HTTP ライブラリを使用して HTTP 呼び出しを生成することもできます。検索条件を指定するには、検索の制約とレスポンスに含める情報を指定するクエリ文字列を指定します。クエリ文字列は URL エンコードする必要があります。GET で送信される検索リクエストの最大サイズは、HTTP メソッド、URI、プロトコルのバージョンを含め 8,190 バイトです。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 エラーが発生します。