配列の要素のインデックス作成方法
項目一覧
配列のインデックス作成において、Atlas Search では配列要素のデータ型のみが必要です。 インデックス定義でデータが配列に含まれていることを指定する必要はありません( []
)。
動的マッピングを有効にすると、Atlas Search は配列内の動的にインデックス付け可能なデータ型の要素を自動的にインデックス化します。 Atlas Search が動的にインデックスを作成するデータ型の詳細については、「データ型 」を参照してください。
Atlas UI のビジュアル エディターまたはJSON エディターを使用して、配列内の要素のインデックスを定義できます。
Atlas Search では、配列要素のインデックスはどのように作成されますか?
Atlas Search は、インデックス作成中にフィールドをフラット化することで、配列内のサポートされているデータ型をインデックス化します。
例
次のドキュメントを検討してください。
doc1 = { a: {b: [[<value1>, <value2>], <value3>] }} doc2 = { a: {b: [<value1>, <value2>, <value3>] } } doc3 = { a: [{ b: <value1>}, {b: <value2>}, {b: <value3>}] }
Atlas Search は、インデックス作成中に前述の配列を次のようにフラット化します。
LuceneDoc<n> = {"a.b":[<value1>,<value2>,<value3>]}
配列内のオブジェクトにインデックスを付けるには
ドキュメントまたはオブジェクトの配列内のフィールドをクエリするには、 embeddedDocuments型を使用してオブジェクトの配列を含むフィールドをインデックスする必要があります。
制限事項を確認する
Atlas Search は、フィールドタイプが配列に含まれている場合、または配列に含まれているドキュメントにある場合、次の Atlas Search フィールドタイプのインデックスを作成しません。
配列要素のインデックスを定義する
配列要素のインデックスを定義するには、Atlas UI で希望する構成方法を選択し、データベースとコレクションを選択します。
[ Refine Your Indexをクリックしてインデックスを構成します。
Field Mappingsセクションで、 Add Field MappingをクリックしてAdd Field Mappingウィンドウを開きます。
[Customized Configuration] をクリックします。
Field Nameドロップダウンから、インデックスする配列のフィールドを選択します。
[ Data Typeドロップダウンをクリックし、インデックスを作成する配列要素のデータ型を選択します。 選択した型のプロパティを構成する方法の詳細については、選択した型のドキュメントを参照してください。
[Add] をクリックします。
以下は、配列内の要素にインデックスを作成するための JSON構文です。 デフォルトのインデックス定義を以下のように置き換えます。
1 { 2 "mappings": { 3 "dynamic": true|false, 4 "fields": { 5 "<array-field-name>": { 6 "type": "<array-element-data-type>" 7 } 8 } 9 } 10 }
配列要素のインデックス作成例を試す
次のインデックス定義の例では、 sample_mflix.moviesコレクションを使用します。 サンプル データがすでにクラスターにロードされている場合は、Atlas UI のビジュアル エディターまたはJSONエディターを使用してインデックスを構成できます。 ご希望の構成方法を選択したら、データベースとコレクションを選択し、インデックスを微調整してフィールド マッピングを追加します。
次のインデックス定義は、string 値の配列を含むgenres
フィールドをインデックス化します。
Add Field Mappingウィンドウで、 Field Nameドロップダウンからgenresを選択します。
Data Typeドロップダウンをクリックし、String を選択します。
String Propertiesのデフォルト設定は保持します。
[Add] をクリックします。
デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。
1 { 2 "mappings": { 3 "fields": { 4 "genres": { 5 "type": "string" 6 } 7 } 8 } 9 }