配列の要素のインデックス作成方法
項目一覧
配列のインデックス作成において、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 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 }