ファセット検索の数値のインデックス方法
Atlas Search numberFacet
タイプを使用すると、ファセット用に指定されたrepresentation
を使用して数値をインデックスできます。 BSON types int32
、 int64
、 double
の数値をインデックスできます。
Atlas Search は、 numberFacet
型としてインデックス作成されたフィールドに対するファセットクエリのみをサポートします。 同じフィールドで通常の検索も実行するには、フィールドを タイプnumber
としてインデックスする必要があります。
埋め込まれたドキュメント内のstringフィールドをファセットするには、親フィールドをドキュメント型としてインデックス付けする必要があります。 埋め込まれたドキュメント内の string フィールドをファセットすると、Atlas Search は一致する親ドキュメントの数のみのファセット数を返します。
Atlas Search は、ファセットのnumber
値を動的にインデックスしません。 ファセットのnumber
値をインデックスするには、静的マッピングを使用する必要があります。 Atlas UI のビジュアル エディターまたはJSON エディターを使用して、 number
フィールドをnumberFacet
タイプとしてインデックスできます。
numberFacet
の制限事項の確認
次の制限が適用されます。
ファセット用に
decimal128
のインデックスを作成することはできません。ファセット用の配列、または配列に含まれるドキュメント内の数値のインデックスは作成できません。
embeddedDocuments
フィールドの一部としてインデックス付けされた数値フィールドをファセットすることはできません。
numberFacet
型のインデックスを定義する
numberFacet
タイプのインデックスを定義するには、Atlas UI で希望する構成方法を選択し、データベースとコレクションを選択します。
[ Refine Your Indexをクリックしてインデックスを構成します。
Field Mappingsセクションで、 Add Field MappingをクリックしてAdd Field Mappingウィンドウを開きます。
[Customized Configuration] をクリックします。
Field Nameドロップダウンからインデックスするフィールドを選択します。
注意
フィールド名の先頭にドル記号(
$
)が含まれるフィールドにはインデックスを付けられません。Data Typeドロップダウンをクリックし、NumberFacet を選択します。
numberFacet
型のフィールド プロパティを構成します。 詳しくは、「 フィールド プロパティ」を参照してください。[Add] をクリックします。
以下は、numberFacet
型の JSON 構文です。デフォルトのインデックス定義を以下のように置き換えます。フィールドの詳細については、「フィールド プロパティ」を参照してください。
{ "mappings": { "dynamic": true|false, "fields": { "<field-name>": { "type": "numberFacet", "representation": "int64|double", "indexIntegers": true|false, "indexDoubles": true|false } } } }
numberFacet
フィールド プロパティを構成する
Atlas Search numberFacet
型は次のパラメータを取ります。
オプション | タイプ | 必要性 | 説明 | default |
---|---|---|---|---|
type | string | 必須 | フィールドの型。 値は numberFacet である必要があります。 | |
representation | string | 任意 | インデックスを作成するフィールドのデータ型。 値は次のいずれかのBSON types になります。
詳細については、以下の例を参照してください。 | double |
indexIntegers | ブール値 | 任意 | int32 とint64 の型値をインデックス化するか省略するかを示します。 値はtrue またはfalse です。 これとindexDoubles のいずれかはtrue である必要があります。 | true |
indexDoubles | ブール値 | 任意 | double 型の値をインデックス化するか省略するかを示します。 値はtrue またはfalse です。 これとindexIntegers のいずれかはtrue である必要があります。 | true |
numberFacet
型の例を試す
次のインデックス定義の例では、 sample_mflix.moviesコレクションを使用します。 サンプル データがすでにクラスターにロードされている場合は、Atlas UI のビジュアル エディターまたはJSONエディターを使用してインデックスを構成できます。 ご希望の構成方法を選択したら、データベースとコレクションを選択し、インデックスを微調整してフィールド マッピングを追加します。
次のインデックス定義の例では、 year
フィールドを Atlas Search numberFacet
タイプとしてインデックス化し、Atlas Searchファセット を使用してそのフィールドに対するクエリをサポートします。
Add Field Mappingウィンドウで、 Field Nameドロップダウンからyearを選択します。
Data Typeドロップダウンをクリックし、NumberFacet を選択します。
NumberFacet Propertiesのデフォルト値を受け入れます。
[Add] をクリックします。
デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。
{ "mappings": { "dynamic": false, "fields": { "year": { "type": "numberFacet" } } } }
次のインデックス定義の例では、year
フィールドをnumberFacet
タイプとnumber
タイプとしてインデックス化し、クエリの結果の次のタイプを返します。
Atlas Searchファセットを使用したクエリのメタデータ結果。
Atlas Search 演算子を使用したクエリの検索結果には、 near 、 equals 、 range などがあります。
Add Field Mappingウィンドウで、 Field Nameドロップダウンからyearを選択します。
Data Typeドロップダウンをクリックし、NumberFacet を選択します。
NumberFacet Propertiesのデフォルト値を受け入れます。
[Add] をクリックします。
ステップ1を繰り返し、 Data Typeドロップダウンから [ Number ] を選択します。
Number Propertiesのデフォルト値を受け入れます。
[Add] をクリックします。
デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。
{ "mappings": { "dynamic": false, "fields": { "year": [ { "type": "numberFacet" }, { "type": "number" } ] } } }