Amazon CloudSearch
開発者ガイド (API バージョン 2013-01-01)

Amazon CloudSearch ドメインのインデックスフィールドの設定

検索ドメインに追加する各ドキュメントには、検索または取得できるデータを含むフィールドのコレクションがあります。各ドキュメントには、一意のドキュメント ID が割り当てられ、少なくとも 1 つのフィールドがある必要があります。

ドメインの設定では、ドキュメントに含まれるフィールドごとにインデックスフィールドを定義します。認識されないフィールドを含むドキュメントをアップロードすることはできません。ただし、あらゆるドキュメントがすべてのフィールドを含む必要はありません—ドキュメントはドメイン用に設定されたフィールドのサブセットを含むことができます。

Amazon CloudSearch は、次のインデックスフィールドの型をサポートしています。

  • date—タイムスタンプが含まれます。日付と時刻は、IETF RFC3339: yyyy-mm-ddTHH:mm:ss.SSSZ に従って、UTC(協定世界時間)で指定されます。たとえば、1970 年 8 月 23 日午後 5 時は、UTC 形式では 1970-08-23T17:00:00Z となります。UTC で時間を指定するときは、小数点以下の秒数も指定できます。例: 1967-01-31T23:20:50.650Z.

  • date-array—複数の値を含むことができる date 型フィールド。

  • double—倍精度 64 ビット浮動小数点値が含まれます。

  • double-array—複数の値を含むことができる double 型フィールド。

  • int—64 ビット符号付き整数値が含まれます。

  • int-array—複数の値を含むことができる int 型フィールド。

  • latlon—緯度と経度の値のペア (lat, lon) で位置を格納します。

  • literal—正確な一致を可能にする識別子またはその他のデータが含まれます。リテラルフィールドでは、大文字と小文字が区別されます。

  • literal-array—複数の値を含むことができる literal 型フィールド。

  • text—任意の英数字データが含まれます。

  • text-array—複数の値を含むことができる text 型フィールド。

通常のインデックスフィールド名は、3 文字以上、64 文字以内で、先頭は英字にする必要があります。使用できる文字は、a​~​z(小文字)、0~​9、_(下線)です。score という名前は予約済みのため、フィールド名として指定できません。すべてのフィールド名と式名は一意である必要があります。

動的フィールド名はワイルドカード (*) で始まるか終わる必要があります。ワイルドカードの前後の文字列には、通常のインデックスフィールドと同じ文字セットを含めることができます。動的フィールドの詳細については、「Amazon CloudSearch での動的フィールドの使用」を参照してください。

フィールドで設定できるオプションは、フィールドの型に応じて異なります。

  • HighlightEnabled—すべての HighlightEnabled テキストフィールドの検索ヒットについて、ハイライト情報を取得できます。有効な対象: texttext-array

  • FacetEnabled—すべての FacetEnabled フィールドのファセット情報を取得できます。テキストフィールドはファセットに使用することができません。有効な対象: intint-arraydatedate-arraydoubledouble-arraylatlonliteralliteral-array

  • ReturnEnabled—検索結果を使用して、すべての ReturnEnabled フィールドの値を取得できます。これによって、インデックスのサイズが増加し、ドメインを実行するコストが増加する場合があることに注意してください。可能であれば、インデックスに埋め込むのではなく、外部ソースから大量のデータを取得することをお勧めします。ドメイン間でドキュメントの更新を適用するには時間がかかる可能性があるため、価格情報などの重要なデータは、返されたドキュメント ID を使用して外部ソースから取得する必要があります。有効な対象: intint-arraydatedate-arraydoubledouble-arraylatlonliteralliteral-arraytexttext-array

  • SearchEnabled—すべての SearchEnabled フィールドの内容を検索できます。テキストフィールドは、常に検索可能です。有効な対象: intint-arraydatedate-arraydoubledouble-arraylatlonliteralliteral-arraytexttext-array

  • SortEnabled—任意の SortEnabled フィールドを使用して検索結果をアルファベット順または数値順にソートできます。配列型フィールドを SortEnabled にすることはできません。ソートが有効になっている数値フィールドのみ式で使用できます。有効な対象: intdatelatlondoubleliteraltext

任意のフィールドのデフォルト値とソースを指定することもできます。式で数値フィールドを使用しており、すべてのドキュメントにそのフィールドが存在しているとは限らない場合、デフォルト値の指定が重要になる可能性があります。ソースを指定すると、あるフィールドから別のフィールドにデータがコピーされるため、フィールドに異なるオプションを設定することにより、同じソースデータを複数の方法で使用できます。ワイルドカード (*) を使用してソース名を指定することで、指定されたパターンに一致するすべてのフィールドのデータをコピーできます。

フィールドを追加したり、既存のフィールドを変更するときは、設定の変更を行う際に、明示的にデータのインデックスを再作成するリクエストを発行する必要があります。詳細については、「インデックスの再構築」を参照してください。

重要

フィールドのタイプを変更したことで、新しいフィールド タイプと互換性のないデータを含むドキュメントがインデックス内に存在する場合、インデックス作成を実行すると、処理されるすべてのフィールドは FailedToValidate 状態になり、インデックス作成操作は失敗します。互換性のない設定の変更をロールバックすると、インデックスを再構築できるようになります。変更が必要な場合、互換性のないドキュメントを更新するか、インデックスから削除し、新しい設定を使用する必要があります。

AWS CLI を使用した個々のインデックスフィールドの設定

検索ドメイン用に個々のインデックスフィールドを設定するには、aws cloudsearch define-index-field コマンドを使用します。AWS CLI のインストールおよびセットアップの詳細については、『AWS Command Line Interface ユーザーガイド』を参照してください。

インデックスフィールドをドメインに追加するには

  • aws cloudsearch define-index-field コマンドを実行して、--name オプションで新しいフィールド名を指定し、--type オプションでフィールド型を指定します。以下の例は、movies ドメインに year という int フィールドを追加します。

    aws cloudsearch define-index-field --domain-name movies --name year --type int { "IndexField": { "Status": { "PendingDeletion": false, "State": "RequiresIndexDocuments", "CreationDate": "2014-06-25T23:03:06Z", "UpdateVersion": 15, "UpdateDate": "2014-06-25T23:03:06Z" }, "Options": { "IndexFieldType": "int", "IndexFieldName": "year" } } }

注記

フィールドを追加したり、既存のフィールドを変更するときは、設定の変更を行う際に、明示的にデータのインデックスを再作成するリクエストを発行する必要があります。詳細については、「インデックスの再構築」を参照してください。

Amazon CloudSearch コンソールを使用したインデックスフィールドの設定

Amazon CloudSearch コンソールの [Indexing Options] パネルを使用して、ドメインで簡単に、個々のインデックスフィールドの設定できます。

Amazon CloudSearch コンソールを使用した個々のフィールドの設定

新しいインデックスフィールドを設定するには

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

  2. [Navigation] ペインで、設定するドメインの名前をクリックし、そのドメインの [Indexing Options] リンクをクリックします。

  3. 新しいインデックスフィールドを作成するには、[Add Index Field] をクリックして、リストにフィールドの仕様を追加します(フィールドをまだ作成していない場合、デフォルトでは [Indexing Options] ページに空のフィールドの仕様が表示されます)。

  4. フィールドの一意の名前を指定し、フィールドの型 datedate-arraydoubledouble-arrayintint-arrayliteral literal-arraytexttext-array を選択します。フィールド名は、3 文字以上、64 文字以内で、先頭は英字にする必要があります。使用できる文字は、a​~​z(小文字)、0~​9、_(下線)です。score という名前は予約済みのため、フィールド名として使用できません。

  5. フィールドで有効にするオプションを選択します。インデックス作成オプションの指定の詳細については、「インデックスオプションの設定」を参照してください。

  6. フィールドのデフォルト値を指定します(オプション)。この値は、ドキュメントデータでフィールドの値が指定されていない場合に使用されます。

  7. 各テキストフィールドで使用する分析スキームを選択します。分析スキームは、インデックス作成中に使用される言語固有のテキスト処理オプションを指定します。デフォルトでは、テキストフィールドで _en_default_ 分析スキーマが使用されます。詳細については、「分析スキームの設定」を参照してください。

  8. 追加のフィールドを設定するには、[Add Index Field] をクリックし、これらの設定ステップを繰り返します。

  9. フィールドの設定が終了したら、[Submit] をクリックして変更を保存します。前のフィールド設定を復元するには、[Revert] をクリックします。

注記

フィールドを追加したり、既存のフィールドを変更するときは、設定の変更を行う際に、明示的にデータのインデックスを再作成するリクエストを発行する必要があります。詳細については、「インデックスの再構築」を参照してください。

AWS SDK を使用した Amazon CloudSearch インデックスフィールドの設定

AWS SDK では(Android および iOS SDK を除く)、DefineIndexField も含めて、Amazon CloudSearch 設定 API で定義されたすべての Amazon CloudSearch アクションがサポートされています。AWS SDK のインストールと使用の詳細については、「AWS Software Development Kits」を参照してください。