Amazon で DynamoDB データを検索する CloudSearch - Amazon CloudSearch

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

Amazon で DynamoDB データを検索する CloudSearch

インデックスオプションを設定するとき、またはコンソールを介してデータを検索ドメインにアップロードするときに、DynamoDB テーブルをソースとして指定できます。これにより、検索ドメインをすばやくセットアップし、DynamoDB データベーステーブルに保存されているデータの検索を試みることができます。

検索ドメインがテーブルの変更と同期された状態を保つには、テーブルおよび検索ドメインの両方に更新を送信するか、テーブル全体を新しい検索ドメインに定期的に読み込むことができます。

DynamoDB データを検索するための Amazon CloudSearch ドメインの設定

DynamoDB データを検索するように検索ドメインを設定する最も簡単な方法は、Amazon CloudSearch コンソールを使用することです。コンソールの設定ウィザードは、テーブルデータを分析し、テーブル内の属性に基づいて推奨されるインデックス作成オプションを表示します。推奨される設定を変更して、インデックスを作成するテーブル属性を制御できます。

注記

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

DynamoDB テーブルから検索ドメインを自動的に設定すると、最大 200 の一意の属性をインデックスフィールドにマッピングできます (200 を超えるフィールドを検索ドメインに設定することはできないため、属性が 200 未満の DynamoDB テーブルからのみデータをアップロードできます)。Amazon が個別の値の数が少ない属性 CloudSearch を検出すると、フィールドは推奨設定でファセットが有効になります。

重要

DynamoDB テーブルを使用してドメインを設定しても、データがインデックス作成のためにドメインに自動的にアップロードされることはありません。ドメインを設定した後、別個のステップとしてインデックス作成のためにデータをアップロードする必要があります。

Amazon CloudSearch コンソールを使用して DynamoDB を検索するようにドメインを設定する

Amazon CloudSearch コンソールを使用して、DynamoDB テーブルからのデータを分析して、検索ドメインを設定できます。テーブルのサイズに関係なく、最大 5 MB が読み取られます。デフォルトでは、Amazon はテーブルの先頭から CloudSearch 読み取ります。開始キーを指定して、特定の項目から読み取りを開始できます。

DynamoDB テーブルを使用して検索ドメインを設定するには
  1. https://console.aws.amazon.com/cloudsearch/home で Amazon CloudSearch コンソールを開きます。

  2. 左側のナビゲーションペインから [ドメイン] を選択します。

  3. ドメイン名を選択し、詳細パネルを開きます。

  4. [インデックスオプション] タブに移動し、[設定ウィザード] を選択します。

  5. [Amazon DynamoDB] を選択します。

  6. 分析する DynamoDB テーブルを選択します。

    • テーブルからの読み取り時に消費可能な読み取りキャパシティーユニットを制限するには、使用する読み取りキャパシティーユニットの最大パーセンテージを入力します。

    • 特定の項目から読み取りを開始するには、[ハッシュキーを開始] を指定します。テーブルでハッシュおよび範囲タイプのプライマリキーが指定されている場合、項目のハッシュ属性と範囲属性の両方を指定します。

  7. [次へ] をクリックします。

  8. 推奨される設定を確認します。これらのフィールドを編集して、フィールドを追加できます。

  9. 完了したら、[確認] を選択します。

  10. まだデータをドメインにアップロードしていない場合は、[今すぐインデックスを作成する] チェックボックスをオフにして、インデックスを作成せずに終了します。設定の変更が終了し、新しい設定でデータのインデックスを作成する準備ができたら、[今すぐインデックスを作成する] が選択されていることを確認します。変更を適用する準備が完了したら、[完了] を選択します。

DynamoDB CloudSearch から Amazon にデータをアップロードする

DynamoDB データは、Amazon CloudSearch コンソールまたは Amazon CloudSearch コマンドラインツールを使用して検索ドメインにアップロードできます。DynamoDB テーブルからデータをアップロードすると、Amazon はそれをドキュメントバッチ CloudSearch に変換してインデックス作成できるようにします。ドメイン設定で各属性のインデックスフィールドを選択して定義します。詳細については、「DynamoDB データを検索するための Amazon CloudSearch ドメインの設定」を参照してください。

複数の DynamoDB テーブルから同じ Amazon CloudSearch ドメインにデータをアップロードできます。ただし、すべてのテーブルから最大 200 の属性を組み合わせてアップロードできることに注意してください。同じキーを持つ項目が、アップロードされた複数のテーブルに存在する場合、最後に適用された項目により、それより前のすべてのバージョンが上書きされます。

テーブルデータをドキュメントバッチに変換すると、Amazon はテーブルから読み取る項目ごとにドキュメント CloudSearch を生成し、各項目属性をドキュメントフィールドとして表します。各ドキュメントの一意の ID は、docid 項目属性 (存在する場合) から読み取られるか、プライマリキーに基づいて英数字値が割り当てられます。

Amazon がテーブル項目のドキュメント CloudSearch を生成する場合:

  • 文字列セットと数値セットは、多値フィールドとして表されます。DynamoDB セットに 100 個を超える値が含まれている場合、最初の 100 個の値だけが多値フィールドに追加されます。

  • DynamoDB バイナリ属性は無視されます。

  • 属性名は、フィールド名の Amazon CloudSearch 命名規則に準拠するように変更されます。

    • 大文字はすべて小文字に変換されます。

    • DynamoDB 属性名の先頭が文字でない場合、フィールド名の先頭には f_ が付きます。

    • a~z、0~9、_ (下線) 以外のすべての文字は、下線で置き換えられます。この変換の結果フィールド名が重複する場合、フィールド名を一意にするために番号が付けられます。例えば、属性名 håth-thát はそれぞれ h_th_t1h_t2 にマッピングされます。

    • DynamoDB 属性名が 64 文字を超える場合、属性名の最初の 56 文字が属性名全体の 8 文字の MD5 ハッシュで連結され、フィールド名が形成されます。

    • 属性名が body の場合、フィールド名 f_body にマッピングされます。

    • 属性名が _score の場合、フィールド名 f_ _score にマッピングされます。

  • 数値属性は Amazon CloudSearch int フィールドにマッピングされ、値は 32 ビットの符号なし整数に変換されます。

    • 数値属性に 10 進値が含まれる場合、値の整数部だけが保存されます。小数点の右側の値はすべて削除されます。

    • 符号なし整数として保存可能な値より値が大きい場合、値は切り捨てられます。

    • 負の整数は、正の符号なし整数として扱われます。

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

Amazon CloudSearch コンソールを使用して、DynamoDB テーブルから検索ドメインに最大 5 MB のデータをアップロードできます。

コンソールを使用して DynamoDB データをアップロードするには
  1. https://console.aws.amazon.com/cloudsearch/home で Amazon CloudSearch コンソールを開きます。

  2. 左側のナビゲーションペインから [ドメイン] を選択します。

  3. ドメイン名を選択し、設定を開きます。

  4. [アクション][ドキュメントをアップロード] の順に選択します。

  5. [Amazon DynamoDB] を選択します。

  6. ドロップダウンから、データを含む DynamoDB テーブルを選択します。

    • テーブルからの読み取り時に消費可能な読み取りキャパシティユニットを制限するには、読み取りキャパシティユニットの最大パーセンテージを入力します。

    • 特定の項目から読み取りを開始するには、[ハッシュキーを開始] を指定します。テーブルでハッシュおよび範囲タイプのプライマリキーが指定されている場合、項目のハッシュ属性と範囲属性の両方を指定します。

  7. テーブルオプションの指定が完了したら、[次へ] を選択します。

  8. アップロードされる項目を確認します。[生成されたドキュメントバッチをダウンロード] を選択して、生成されたドキュメントバッチを保存することもできます。次に、[ドキュメントをアップロード] を選択します。

検索ドメインと DynamoDB テーブルの同期

検索ドメインと DynamoDB テーブルの更新が同期された状態を保つには、更新をプログラムにより追跡してドメインに適用するか、新しいドメインを定期的に作成してテーブル全体を再度アップロードできます。大量のデータがある場合、プログラムにより更新を追跡して適用することをお勧めします。

プログラムによる更新の同期

DynamoDB テーブルへの変更と追加を同期させるには、別個の更新テーブルを作成して検索対象のテーブルの変更を追跡し、更新テーブルの内容を対応する検索ドメインに定期的にアップロードできます。

検索ドメインからドキュメントを削除するには、削除された各ドキュメントの削除オペレーションを含むドキュメントバッチを生成してアップロードする必要があります。1 つの方法として、別個の DynamoDB テーブルを使用して削除された項目を追跡し、テーブルを定期的に処理して削除オペレーションのバッチを生成し、バッチを検索ドメインにアップロードすることができます。

初期データアップロード時に加えた変更が失われないようにするために、追跡の変更の収集は初期データアップロードの前に開始する必要があります。一部の Amazon CloudSearch ドキュメントは同じデータで更新できますが、変更が失われず、検索ドメインにすべてのドキュメントの up-to-date バージョンが含まれていることを確認します。

更新を同期させる頻度は、変更のボリュームと更新のレーテンシーの許容度によって決まります。1 つの方法として、一定期間の変更を蓄積し、その期間の終わりに変更をアップロードして、その期間の追跡テーブルを削除することができます。

例えば、変更と追加項目を 1 日 1 回同期させるには、1 日の始めに updates_YYYY_MM_DD というテーブルを作成して毎日の更新を収集できます。1 日の終わりに、updates_YYYY_MM_DD テーブルを検索ドメインにアップロードします アップロードが完了したら、更新テーブルを削除し、翌日の新しいテーブルを作成できます。

新しい検索ドメインへの切り替え

個々の更新を追跡してテーブルに適用しない場合、テーブル全体を新しい検索ドメインに定期的に読み込み、クエリトラフィックを新しいドメインに切り替えることができます。

新しい検索ドメインに切り替えるには
  1. 新しい検索ドメインを作成し、既存のドメインから設定をコピーします。

  2. DynamoDB テーブル全体を新しいドメインにアップロードします 詳細については、「DynamoDB CloudSearch から Amazon にデータをアップロードする」を参照してください。

  3. 新しいドメインがアクティブになったら、新しいドメインをポイントするようクエリトラフィックを古い検索ドメインに転送する DNS エントリを更新します。例えば、Amazon Route 53 を使用している場合、新しい検索サービスエンドポイントでレコードセットを更新するだけで済みます。

  4. 古いドメインを削除します。