

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

# Amazon CloudSearch 用データの準備
<a name="preparing-data"></a>

インデックス作成のための検索ドメインにアップロードする前に、JSON または XML 形式でデータを作成する必要があります。検索結果として返せるようにする各項目がドキュメントとして示されます。各ドキュメントには固有のドキュメント ID、および検索し、結果を返すデータを含むフィールドが 1 つ以上あります。このドキュメントフィールドを使用して、ドメイン用に設定したインデックスフィールドの値を入力します。詳細については、「[インデックスフィールドの設定](configuring-index-fields.md)」を参照してください。

「[Creating Document Batches](#creating-document-batches)」はデータの整形方法を説明しています。Amazon CloudSearch の JSON および XML スキーマの詳細については、「[ドキュメントサービス API リファレンス](document-service-api.md)」を参照してください。

**Topics**
+ [Mapping Document Data](#mapping-document-data)
+ [Creating Document Batches](#creating-document-batches)

## Amazon CloudSearch でインデックスフィールドにドキュメントデータをマッピングする
<a name="mapping-document-data"></a>

インデックスのフィールドに入力するために、Amazon CloudSearch は対応するドキュメントフィールドからデータを読み込みます。ドキュメントデータで指定されたフィールドはすべてインデックス作成オプションで設定する必要があります。ドキュメントはドメイン用に設定されたフィールドのサブセットを含むことができます。すべてのドキュメントが必ずしもすべてのフィールドを含む必要はありません。さらに、あるフィールドから別のフィールドにデータをコピーして、インデックスの追加フィールドに入力することもできます。これにより、フィールドに対して異なるオプションを設定することで、同一のソースデータを異なる方法で利用することができます。

`text-array` のような配列フィールドは、最大 1000 個の値を含むことができます。検索時に、これらの値のどれかが検索クエリに一致すると、ドキュメントはヒット項目として返されます。

## Amazon CloudSearch でのドキュメントバッチの作成
<a name="creating-document-batches"></a>

**重要**  
Amazon CloudSearch ドメインにデータをアップロードする前に、次のガイドラインに従ってください。  
ドキュメントをアップロードする前にグループ化して*バッチ*します。1 つのドキュメントのみで構成されるバッチを連続してアップロードすると、Amazon CloudSearch が更新を処理できる速度に大きな悪影響が出ます。代わりに、できるだけ制限に近いバッチを作成し、アップロードする頻度を少なくしてください。最大バッチサイズとアップロード頻度の詳細については、「[Amazon CloudSearch の制限を理解する](limits.md)」を参照してください。
ドメインのドキュメントエンドポイントと検索エンドポイントは、ドメインが存在している間変わりません。すべてのアップロードリクエストや検索リクエストの前にエンドポイントを取得するのではなく、エンドポイントをキャッシュに保存してください。各リクエストの前に `aws cloudsearch describe-domains` または `DescribeDomains` を呼び出すことによって Amazon CloudSearch 設定サービスにクエリを実行すると、リクエストが調整される可能性があります。

ドキュメントバッチを作成して、検索可能にするデータを記述します。ドキュメントバッチをドメインに送信すると、ドメインのインデックス作成オプションに従って自動的にデータのインデックスが作成されます。Amazon CloudSearch コンソールは、各種ソースドキュメントから自動的にドキュメントバッチを生成できます。

ドキュメントバッチは追加および削除操作のコレクションであり、ドメインで追加、更新、削除するドキュメントを表します。バッチは JSON または XML で記述できます。最大バッチサイズとドキュメントサイズについては、「[Amazon CloudSearch の制限を理解する](limits.md)」を参照してください。

 可能な限り最高のアップロードパフォーマンスを実現するために、追加および削除オペレーションを最大バッチサイズに近いバッチにグループ化します。ドキュメントサービスに大量の単一ドキュメントバッチを送信すると、変更が検索結果に反映されるまでに要する時間が長くなります。アップロードするデータが大量にある場合は、バッチを並列して送信できます。使用できる同時アップローダーの数は、検索インスタンスタイプによって異なります。ドメインの必要なインスタンスタイプオプションを設定することで、一括アップロード用に事前スケーリングすることができます。詳細については、「[Amazon CloudSearch でのスケーリングオプションの設定](configuring-scaling-options.md)」を参照してください。

バッチ内のドキュメントごとに、以下を指定する必要があります。
+ 実行するオペレーション: *add* または *delete*。
+ ドキュメントの一意の ID。ドキュメント ID では、任意の英字または数字と次の文字を使用できます。​ \$1 - = \$1 ; : / ? @ & @ & ドキュメント ID は、1​～​128 文字以内にする必要があります。
+ 各ドキュメントフィールドの名前と値のペア。`latlon` フィールドの値を指定するには、カンマ区切りリストとして緯度と経度を指定します。例えば、`"location_field": "35.628611,-120.694152"` のようになります。ドキュメントを JSON で指定する場合、フィールドの値を `null` にすることはできません (ただし、フィールドを完全に省略することはできます)。

例えば、次の JSON バッチは、1 個のドキュメントを追加し、1 個のドキュメントを削除します。

```
[
 {"type": "add",
  "id":   "tt0484562",
  "fields": {
    "title": "The Seeker: The Dark Is Rising",
    "directors": ["Cunningham, David L."],
    "genres": ["Adventure","Drama","Fantasy","Thriller"],
    "actors": ["McShane, Ian","Eccleston, Christopher","Conroy, Frances",
              "Crewson, Wendy","Ludwig, Alexander","Cosmo, James",
              "Warner, Amelia","Hickey, John Benjamin","Piddock, Jim",
              "Lockhart, Emma"]
  }
 },
 {"type": "delete",
  "id":   "tt0484575"
 }
]
```

XML 形式では同じバッチが次のようになります。

```
<batch>
 <add  id="tt0484562">
  <field name="title">The Seeker: The Dark Is Rising</field>
  <field name="directors">Cunningham, David L.</field>
  <field name="genres">Adventure</field>
  <field name="genres">Drama</field>
  <field name="genres">Fantasy</field>
  <field name="genres">Thriller</field>
  <field name="actors">McShane, Ian</field>
  <field name="actors">Eccleston, Christopher</field>
  <field name="actors">Conroy, Frances</field>
  <field name="actors">Ludwig, Alexander</field>
  <field name="actors">Crewson, Wendy</field>
  <field name="actors">Warner, Amelia</field>
  <field name="actors">Cosmo, James</field>
  <field name="actors">Hickey, John Benjamin</field>
  <field name="actors">Piddock, Jim</field>
  <field name="actors">Lockhart, Emma</field>
 </add>
 <delete id="tt0484575" />
</batch>
```

Amazon CloudSearch は、その中のすべてのドキュメントが有効である場合のみ、バッチを受け取ります。JSON または XML データの妥当性は、`xmllint` や `jsonlint` のようなツールを使用して確認できます。

JSON バッチと XML バッチにはどちらも、XML で有効な UTF-8 文字のみを含めることができます。有効な文字は、制御文字のタブ (0009)、復帰 (000D)、改行 (000A)、および Unicode と ISO/IEC 10646 での有効な文字です。FFFE、FFFF、サロゲートブロックの D800–DBFF と DC00–DFFF は無効で、エラーが発生します (詳細については、[Extensible Markup Language (XML) 1.0 (Fifth Edition)](http://www.w3.org/TR/REC-xml/#charsets) を参照してください。) 無効な文字に一致する次の正規表現を使用して、無効な文字を削除することができます`/[^\u0009\u000a\u000d\u0020-\uD7FF\uE000-\uFFFD]/ `。

データを JSON 形式にする場合、フィールド値内の引用符 (") およびバックスラッシュ (\$1) はバックスラッシュを使ってエスケープする必要があります。例:

```
"title":"Where the Wild Things Are"
"isbn":"0-06-025492-0"
"image":"images\\covers\\Where_The_Wild_Things_Are_(book)_cover.jpg"
"comment":"Sendak's \"Where the Wild Things Are\" is a children's classic."
```

データを XML 形式にする場合、フィールド値内のアンパサンド (&) および、不等号 (より小さい) (<) は、該当する実体参照 (`&amp;` と `&lt;`) によって表現する必要があります。

例:

```
<field name="title">Little Cow &amp; the Turtle</field>
<field name="isbn">0-84466-4774</field>
<field name="image">images\covers\Little_Cow_&amp;_the_Turtle.jpg</field>
<field name="comment">&lt;insert comment></field>
```

ユーザー生成コンテンツの大きなブロックがある場合は、特殊な文字をすべて実体参照に置き換えるのではなく、フィールド全体を CDATA セクションで囲むこともできます。例:

```
<field name="comment"><![CDATA[Monsters & mayhem--what's not to like! ]]>
```

### Amazon CloudSearch でのドキュメントの追加および更新
<a name="adding-documents"></a>

追加オペレーションでは、インデックスに追加する新しいドキュメント、または、更新する既存のドキュメントを指定します。

 ドキュメントを追加または更新するときは、ドキュメントの ID と、ドキュメントが含むすべてのフィールドを指定します。すべてのドキュメントで、すべての設定されたフィールドを指定する必要はありません。ドキュメントは設定されたフィールドのサブセットを含むことができます。しかし、ドキュメントのすべてのフィールドは、ドメインで設定されているフィールドに対応する必要があります。

**ドキュメントを検索ドメインに追加するには**

1. 追加するドキュメントの ID と、検索できるフィールドまたは結果で戻り値として使用できる各フィールドを含む追加オペレーションを指定します。ドキュメントがすでに存在する場合、追加オペレーションによってドキュメントは置き換えられます (選択したフィールドだけを更新することはできません。ドキュメントは新しいバージョンで上書きされます)。例えば、次のオペレーションはドキュメント tt0484562 を追加します。

   ```
   { "type": "add",
     "id":   "tt0484562",
     "fields": {
       "title": "The Seeker: The Dark Is Rising",
       "directors": ["Cunningham, David L."],
       "genres": ["Adventure","Drama","Fantasy","Thriller"],
       "actors": ["McShane, Ian","Eccleston, Christopher","Conroy, Frances",
                 "Crewson, Wendy","Ludwig, Alexander","Cosmo, James",
                 "Warner, Amelia","Hickey, John Benjamin","Piddock, Jim",
                 "Lockhart, Emma"]
     }
   }
   ```

1. ドキュメントバッチに追加オペレーションを含めて、ドメインにバッチをアップロードします。データは Amazon CloudSearch コンソール経由でアップロードできます。または、ドメインのドキュメントサービスエンドポイントにリクエストを直接投稿してアップロードできます。詳細については、「[Amazon CloudSearch ドメインへのデータのアップロード](uploading-data.md)」を参照してください。

### Amazon CloudSearch でのドキュメントの削除
<a name="deleting-documents"></a>

削除オペレーションでは、ドメインのインデックスから削除するドキュメントを指定します。ドキュメントを削除すると検索できなくなり、結果に返されることもありません。

ドキュメントを削除するために更新を投稿するときは、削除する各ドキュメントを指定する必要があります。

インデックスサイズに合わせてドメインがスケールアップされ、多数のドキュメントを削除すると、次に完全なインデックスを再構築したときにドメインが縮小されます。インデックスは定期的に自動的に再構築されますが、できるだけ早くスケールダウンするには、キュメントの削除が終了したら、明示的に[インデックス作成を実行](indexing.md)します。

**注記**  
ドキュメントを削除するには、削除オペレーションを含むドキュメントバッチをアップロードします。削除操作を行うバッチも含めて、検索ドメインにアップロードしたドキュメントバッチの合計数に対して請求されます。Amazon CloudSearch の料金の詳細については、[aws.amazon.com/cloudsearch/pricing/](https://aws.amazon.com/cloudsearch/pricing/) を参照してください。

**検索ドメインからドキュメントを削除するには**

1. 削除するドキュメントの ID を含む削除オペレーションを指定します。例えば、次のオペレーションはドキュメント `tt0484575` を削除します。

   ```
   {
     "type": "delete",
     "id": "tt0484575"
   }
   ```

1. ドキュメントバッチに削除オペレーションを含めて、ドメインにバッチをアップロードします。バッチは Amazon CloudSearch コンソール経由でアップロードできます。または、ドメインのドキュメントサービスエンドポイントにリクエストを直接投稿してアップロードできます。詳細については、「[Amazon CloudSearch ドメインへのデータのアップロード](uploading-data.md)」を参照してください。

1. 削除オペレーションでは、インデックスからドキュメントが削除されます。ドキュメントは検索結果に表示されません。Amazon CloudSearch から完全に削除するには、[インデックスを再構築](API_IndexDocuments.md)する必要もあります。

### Amazon CloudSearch 用のソースデータの処理
<a name="processing-source-data"></a>

データをアップロードしてインデックスを作成するには、データを JSON 形式または XML 形式にする必要があります。Amazon CloudSearch コンソールには、いくつかの一般的なファイルタイプ (CSV、テキスト、HTML) から適切な JSON または XML 形式のファイルを自動的に生成する方法が用意されています。Amazon CloudSearch 2011-02-01 API 用に整形されたバッチを処理して、2013-01-01 形式に変換することもできます。

ほとんどのファイルタイプで、各ソースファイルは、生成された JSON または XML 形式の別々のドキュメントとして表されます。ファイルにメタデータが使用可能な場合は、メタデータが対応するドキュメントフィールドにマッピングされます。ドキュメントのメタデータから生成されるフィールドはファイルの種類によって異なります。ソースファイルのコンテンツは解析されて、単一のテキストフィールドになります。ファイルが 1 MB 以上のデータを含む場合、テキストフィールドにマッピングされるデータは切り捨てられるため、ドキュメントが 1 MB を超えることはありません。

CSV ファイルは扱いが異なります。CSV ファイルを処理するとき、Amazon CloudSearch は最初の 2 行のコンテンツを使用してドキュメントフィールドを定義し、残りの行は行ごとに別のドキュメントを作成します。*docid* という列ヘッダーがある場合、その列の値はドキュメント ID として使用されます。必要に応じて、docid 値は、許可されている文字セットに従うように正規化されます。ドキュメント ID では、任意の英字または数字と次の文字を使用できます。​\$1 - = \$1 ; : / ? @ & docid 列がない場合は、ファイル名と行番号に基づいて各ドキュメントの一意の ID が生成されます。

複数の種類のファイルをアップロードする場合、CSV ファイルは行ごとに解析され、非 CSV ファイルは個別のドキュメントとして扱われます。

**注記**  
現在は、CSV ファイルのみが解析されて、自動的にカスタムフィールドデータが抽出され、複数のドキュメントが生成されます。

DynamoDB に格納されているデータを処理することもできます。Amazon CloudSearch は、テーブルから読み込んだ各項目を個別のドキュメントとして表します。

#### Amazon CloudSearch コンソールを使用したソースデータの処理
<a name="processing-source-data-console"></a>

Amazon CloudSearch コンソールでソースドキュメントまたは DynamoDB 項目をアップロードすると、それらは自動的に Amazon CloudSearch JSON 形式に変換されます。コンソールを使用して、一度に最大 5 MB のデータをアップロードできます。必要に応じて、生成された JSON ファイルをダウンロードすることもできます。コンソールを介してデータをアップロードする方法の詳細については、「[Amazon CloudSearch ドメインへのデータのアップロード](uploading-data.md)」と「[Uploading DynamoDB Data](searching-dynamodb-data.md#searching-dynamodb-data-console)」を参照してください。