メニュー
Amazon CloudSearch
開発者ガイド (API Version 2013-01-01)

Amazon CloudSearch ドメインにデータをアップロード

Amazon CloudSearch ドメインにアップロードするデータを記述するためのドキュメントバッチを作成します。ドキュメントバッチは追加および削除操作のコレクションであり、ドメインで追加、更新、削除するドキュメントを表します。バッチは JSON または XML で記述できます。ドキュメントバッチをドメインにアップロードすると、ドメインのインデックス作成オプションに従って自動的にデータのインデックスが作成されます。

データが変更されたら、バッチをアップロードし、インデックスに関してドキュメントを追加、変更、削除します。Amazon CloudSearch は継続的に更新を適用します。明示的にデータのインデックスを再作成する必要があるのは、ドメインが NEEDS INDEXING 状態になる設定変更を実行した場合、または、サジェスタを更新する必要がある場合のみです。

ドメインにデータをアップロードするには、データが有効な JSON または XML バッチ形式である必要があります。各ドキュメントに指定されたフィールドは、ドメイン用に設定されたインデックスフィールドに対応する必要があります。ただし、設定されたすべてのインデックスフィールドをドキュメントが含んでいる必要はありません。ドキュメントバッチの作成方法については、「データの準備」を参照してください。ドメインのインデックスフィールドの設定については、「configure indexing options」を参照してください。

削除操作を行うバッチも含めて、検索ドメインにアップロードしたドキュメントバッチの合計数に対して請求されます。Amazon CloudSearch の料金の詳細については、「aws.amazon.com/cloudsearch/pricing/」を参照してください。

重要

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

ドキュメントバッチは、Amazon CloudSearch console または AWS CLI を使用するか、ドメインのドキュメントサービスエンドポイントに posting it directly することで、ドメインに送信できます。

ドキュメントサービス API の詳細については、「Document Service API」を参照してください。

Amazon CloudSearch での一括アップロード

ドキュメントバッチのサイズは、バッチごとに 5 MB に制限されています。ただし、バッチを並行してアップロードして、すべてのデータをアップロードするのにかかる時間を短縮することができます。

一括アップロードを実行するには、以下に従います。

  • バッチのサイズを制限の 5 MB にできるだけ近付けてください。小さなバッチを大量にアップロードすると、アップロードとインデックス作成の処理速度が低下します。

  • 必要なインスタンスタイプを、デフォルトの search.m1.small より大きなインスタンスタイプに設定します。使用できるアップロードスレッドの数は、ドメインで使っている検索インスタンスのタイプ、データの性質、インデックス作成オプションによって異なります。インスタンスタイプが大きいほど、アップロード容量が大きくなります。search.m1.small インスタンスにバッチを並列アップロードしようとすると、通常は、高い確率で 504 または 507 エラーが発生します。必要なインスタンスタイプの設定の詳細については、「スケーリングオプションの設定」を参照してください。

  • 設定の変更がアクティブになったら、データのアップロードを開始します。5xx エラーが高い確率で発生する場合は、アップロードレートを減らすか、サイズの大きいインスタンスタイプに切り替える必要があります。最大のインスタンスタイプを既に使っている場合は、望ましいパーティション数を増やしてアップロード容量をさらに増やすことができます。

    重要

    ドメインが「PROCESSING」状態の間に大量の更新を送信した場合、更新が検索インデックスに適用されるまでの時間が長くなることがあります。これを回避するには、ドメインが「ACTIVE」状態になるまで待ってから一括アップロードを開始してください。

  • 一括アップロードが終了すると、必要なインスタンスタイプを、小さなインスタンスタイプに戻すことができます。小さなタイプにインデックスが収まる場合は、Amazon CloudSearch が自動的にドメインを縮小します。Amazon CloudSearch は、ドメインに設定された必要なインスタンスタイプより小さいインスタンスタイプに縮小することはありません。

データが 1 GB 未満のデータセットまたは 1,000,001 KB 未満のドキュメントの場合は、スモール検索インスタンスで十分です。1~8 GB のデータセットをアップロードするには、アップロードする前に、必要なインスタンスタイプを search.m3.large に設定することをお勧めします。8~16 GB のデータセットは、search.m3.xlarge で始まります。16~32 GB のデータセットは、search.m3.2xlarge で始まります。アップロードのサイズが 32 GB を超える場合は、インスタンスタイプに search.m3.2xlarge を選択し、データセットに対応できるように、望ましいパーティション数を増やします。各パーティションに最大 32 GB のデータを格納できます。さらに多くのアップロード容量が必要な場合、または 500 GB を超えるインデックスを作成する場合は、Service Increase Limit Request を送信します。

Amazon CloudSearch コンソールを使用したデータのアップロード

Amazon CloudSearch コンソールでは、ドメインダッシュボードを使って、ローカルファイルシステムや Amazon S3 からドメインにデータをアップロードできます。コンソールは、アップロード処理中に以下のファイルタイプを自動的にドキュメントバッチに変換します。

  • JSON または XML (.json、.xml) でフォーマットされたドキュメントバッチ

  • カンマ区切り値(.csv)

  • テキストドキュメント(.txt)

また、DynamoDB テーブルの項目を変換してアップロードすることもできます。詳細については、「Uploading DynamoDB Data」を参照してください。

注記

Amazon S3 または DynamoDB からデータをアップロードするには、サービスとアップロードするリソースの両方に対するアクセス許可が必要です。詳細については、「バケットポリシーとユーザーポリシーの使用」および「IAM を使用して DynamoDB リソースへのアクセスをコントロールする」を参照してください。

CSV ファイルは行単位で解析され、行ごとに別のドキュメントが生成されます。その他のファイルタイプはすべて単一ドキュメントとして扱われます。ドキュメントバッチの自動生成の詳細については、「データの準備」を参照してください。

注記

Amazon S3 バケットまたは DynamoDB テーブルから Amazon CloudSearch にデータをアップロードするには、それらのサービスとリソースにアクセスする必要があります。

インデックス作成のためにデータをドメインに送信するには

  1. AWS マネジメントコンソールにサインインし、Amazon CloudSearch console at https://console.aws.amazon.com/cloudsearch/home を開きます。

  2. [Navigation] ペインで、ドメインの名前をクリックします。

  3. ドメインのダッシュボードの上部で、[Upload Documents] をクリックします。

  4. ドメインにアップロードするデータの場所を選択します。

    • ローカルディスク上のファイル

    • Amazon S3 のオブジェクト

    • DynamoDB の項目

    • 定義済みデータ

    ドキュメントバッチとしてフォーマットされていないデータをアップロードすると、アップロード処理中に自動的に変換されます。

    注記

    バッチが無効になっている場合、Amazon CloudSearch は 1 つのコンテンツフィールドと汎用メタデータフィールドを含む有効なバッチにコンテンツを変換します。これらは通常、ドメイン用に設定されたフィールドではないため、フィールドが存在しないことを示すエラーが発生します。

  5. ローカルファイルをアップロードする場合は、[Browse] をクリックして、アップロードするファイルを選択します。

  6. Amazon S3 からオブジェクトをアップロードする場合は、アップロード元となるバケットを選択します。バケットのコンテンツ全体をアップロードするには、[Prefix] フィールドを空白のままにして、[Add] をクリックします。選択したオブジェクトをアップロードするには、[Prefix] フィールドにフィルタを入力して、[Add] をクリックします(複数のプレフィックスを追加できます)。

  7. DynamoDB から項目をアップロードする場合は、アップロード元となるテーブルを選択します。特定の項目から読み込みを開始するには、開始キーを指定します。テーブルからの読み取り時に消費可能な読み取りキャパシティユニットを制限するには、読み取りキャパシティユニットの最大パーセンテージを入力します。

  8. 定義済みのサンプルデータをアップロードする場合は、使用するデータ セットを選択します。

  9. アップロードするデータを選択したら、[Continue] をクリックします。

  10. [Review Documents] ステップで、アップロードするドキュメントを確認し、[Upload Documents] をクリックして続行します。

  11. [Document Summary] ステップで、ドキュメントバッチがデータから自動生成されている場合は、[Download the generated document batch] をクリックして、そのバッチを取得できます。[Finish] をクリックして、ドメインダッシュボードに戻ります。

AWS CLI を使用したデータのアップロード

aws cloudsearch upload-documents コマンドを使って、ドキュメントバッチを検索ドメインに送信できます。AWS CLI のインストールおよびセットアップの詳細については、『AWS Command Line Interface ユーザーガイド』を参照してください。

インデックス作成のためにドキュメントバッチをドメインに送信するには

  • aws cloudsearchdomain upload-documents コマンドを実行して、ドメインにバッチをアップロードします。--source オプションを少なくとも 1 つ指定して、アップロードするバッチの場所を指定する必要があります。

    Copy
    aws cloudsearchdomain --endpoint-url http://doc-movies-y6gelr4lv3jeu4rvoelunxsl2e.us-east-1.cloudsearch.amazonaws.com upload-documents --content-type application/json --documents movie-data-2013.json { "status": "success", "adds": 5000, "deletes": 0 }

HTTP 経由で Amazon CloudSearch ドメインのドキュメントサービスエンドポイントにドキュメントを投稿

documents/batch リソースを使用して、ドメインにドキュメントバッチを投稿し、ドキュメントを追加、更新、または削除します。(例:

Copy
curl -X POST --upload-file movie-data-2013.json doc-movies-123456789012.us-east-1.cloudsearch.amazonaws.com/2013-01-01/documents/batch --header "Content-Type:application/json"