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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

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

重要
  • 検索エンドポイントは変わりません。ドメインのドキュメントエンドポイントと検索エンドポイントは、ドメインが存在している間変わりません。すべてのアップロードリクエストや検索リクエストの前にエンドポイントを取得するのではなく、エンドポイントをキャッシュに保存してください。すべてのリクエストDescribeDomainsaws cloudsearch describe-domainsまたは を呼び出して 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 はレスポンスを JSON で CloudSearch 返します。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、「」を参照してくださいconfigure access policies。リクエストの署名の詳細については、「AWS API リクエストの署名」を参照してください。

HTTP リクエストをドメインの検索エンドポイントに直接送信する任意のメソッドを使用できます。ウェブブラウザにリクエスト URL を直接入力したり、cURL を使用してリクエストを送信したり、お気に入りの HTTP ライブラリを使用して HTTP 呼び出しを生成したりできます。検索条件を指定するには、検索の制約とレスポンスで戻す内容を指定するクエリ文字列を指定します。クエリ文字列は、URL エンコードされている必要があります。GET 経由で送信される検索リクエストの最大サイズは、HTTP メソッド、URI、プロトコルのバージョンを含め 8190 バイトです。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 というエラーが表示されます。