

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

# Amazon CloudSearch ドメインへの検索リクエストの送信
<a name="submitting-search-requests"></a>

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

**重要**  
検索エンドポイントは変わりません。ドメインのドキュメントエンドポイントと検索エンドポイントは、ドメインが存在している間変わりません。すべてのアップロードリクエストや検索リクエストの前にエンドポイントを取得するのではなく、エンドポイントをキャッシュに保存してください。各リクエストの前に `aws cloudsearch describe-domains` または `DescribeDomains` を呼び出すことによって Amazon CloudSearch 設定サービスにクエリを実行すると、リクエストが調整される可能性があります。
IP アドレスは**変わります**。ドメインの IP アドレスは、時間の経過とともに*変化する*ので、コンソールに表示されるようにエンドポイントをキャッシュし、IP アドレスではなく、`aws cloudsearch describe-domains` コマンドによって返されるようにすることが重要です。また、エンドポイント DNS を IP アドレスに定期的に再解決する必要があります。詳細については、[「DNS 名参照用の JVM TTL の設定」](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-jvm-ttl.html)を参照してください。

例えば、次のリクエストは、 `wolverine`を使用して の簡単なテキスト検索を送信 AWS CLI し、一致するドキュメントの IDs のみを返します。

```
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 のアクセス制御の詳細については、「[Amazon CloudSearch のアクセスの設定](configuring-access.md)」を参照してください。リクエストの署名の詳細については、「[AWS API リクエストの署名](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html)」を参照してください。

HTTP リクエストをドメインの検索エンドポイントに直接送信する任意のメソッドを使用できます。ウェブブラウザにリクエスト URL を直接入力したり、cURL を使用してリクエストを送信したり、お気に入りの HTTP ライブラリを使用して HTTP 呼び出しを生成したりできます。検索条件を指定するには、検索の制約とレスポンスで戻す内容を指定するクエリ文字列を指定します。クエリ文字列は、URL エンコードされている必要があります。GET 経由で送信される検索リクエストの最大サイズは、HTTP メソッド、URI、プロトコルのバージョンを含め 8190 バイトです。HTTP POST を使用してより大きなリクエストを送信できますが、大規模で複雑なリクエストの処理には時間がかかり、タイムアウトになる可能性が高くなることに注意してください。詳細については、「[Amazon CloudSearch での検索リクエストのパフォーマンスのチューニング](tuning-search.md)」を参照してください。

例えば、次のリクエストは、構造化クエリを `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` というエラーが表示されます。

# 検索テスターによる検索
<a name="search-tester"></a>

Amazon CloudSearch コンソールの検索テスターを使用すると、サポートされているクエリパーサー (簡易、構造化、lucene、または dismax) を使用して、サンプル検索リクエストを送信できます。デフォルトでは、リクエストは簡易クエリパーサーで処理されます。選択したパーサーのオプションを指定したり、結果をフィルタリングしてソートしたり、構成されたファセットを参照したりできます。検索結果では、検索ヒットが自動的にハイライトされます。これを行う方法の詳細については、「[Amazon CloudSearch での検索ヒットのハイライト](highlighting.md)」を参照してください。また、サジェスタを選択して、**[Search]** (検索) フィールドに用語を入力するときに、候補を取得することもできます。(候補を取得する前に、サジェスタを設定する必要があります。 詳細については、「[Amazon CloudSearch でのオートコンプリート候補の取得](getting-suggestions.md)」を参照してください。）

デフォルトでは、自動的に生成された関連性スコア * \$1score* に従って結果がソートされます。結果のランク付け方法のカスタマイズについては、「[Amazon CloudSearch での結果のソート](sorting-results.md)」を参照してください。



**ドメインを検索するには**

1. Amazon CloudSearch コンソール ([https://console.aws.amazon.com/cloudsearch/home](https://console.aws.amazon.com/cloudsearch/home)) に移動します。

1. 左側のナビゲーションパネルでドメイン名を選択し、設定を開きます。

1. **[テスト検索を実行]** を選択します。

1. 単純なテキスト検索を実行するには、検索クエリを入力して **[実行]** を選択します。デフォルトでは、すべての `text` および `text-array` フィールドが検索されます。

特定のフィールドを検索するには、**[オプション]** を展開し、**[検索フィールド]** に検索したいフィールドのリストをカンマ区切りで入力します。キャレット (^) を使用して各フィールドの重みを追加すると、検索結果の各フィールドの相対的な重要度を制御できます。例えば、一致する各ドキュメントの関連性スコアを計算するときに、`title^5, description` フィールドのヒット数よりも 5 倍多い `title` 重量ヒットを `description` フィールドで指定するなどです。

構造化クエリ構文を使用するには、**[クエリパーサー]** メニューから **[構造化]** を選択します。構造化クエリパーサーを選択したら、**[検索]** フィールドに構造化クエリを入力して **[実行]** を選択します。例えば、2000 年以前にリリースされたタイトルに *star* のあるすべての映画を見つけるには、`(and title:'star' year:{,2000])` を入力します。詳細については、「[複合クエリの作成](searching-compound-queries.md)」を参照してください。Lucene または DisMax クエリを送信するには、適切なクエリパーサーを選択します。

選択したクエリパーサーに追加オプションを指定して、デフォルトの演算子を設定し、クエリで使用できる演算子を制御できます。詳細については、「[検索リクエストのパラメータ](search-api.md#search-request-parameters)」を参照してください。

リクエスト URL をコピーして貼り付けて、リクエストを送信し、ウェブブラウザからレスポンスを表示できます。リクエストは HTTP または HTTPS 経由で送信できます。