Docs Menu

数値のインデックス作成方法

Atlas Search number タイプを使用して、int32int64、および double データ型の数値を持つフィールドにインデックスを付けることができます。equalsrange、およびnear 演算子を使用して、number タイプのインデックス付きフィールドをクエリできます。number タイプのフィールドでファセット クエリを実行することもできます。

注意

配列内の数値をクエリするには、範囲演算子のみを使用できます。

Atlas Search は、Atlas Search の結果を並べ替えるために、7 月2023 以降に作成されたインデックス内のすべての数値フィールドを自動的にインデックス化します。既存のインデックスの場合、インデックスにインデックス内の数値フィールドを使用するには、インデックスを 再構築する 必要があります。詳しくは、「 既存のインデックスを更新し、Atlas 検索結果を並べ替える 」を参照してください。

動的マッピングを有効にすると、Atlas Search はnumber型のフィールドを自動的にインデックス化します。 Atlas UI のビジュアル エディターまたはJSON エディターを使用して、 numberタイプのフィールドにインデックスを付けることができます。

  1. [ Refine Your Indexをクリックしてインデックスを構成します。

  2. Field Mappingsセクションで、 Add Field MappingをクリックしてAdd Field Mappingウィンドウを開きます。

  3. [Customized Configuration] をクリックします。

  4. Field Nameドロップダウンからインデックスするフィールドを選択します。

    注意

    フィールド名の先頭にドル記号($)が含まれるフィールドにはインデックスを付けられません。

  5. Data Typeドロップダウンをクリックし、Number を選択します。

  6. number型のフィールド プロパティを構成します。 詳しくは、「 フィールド プロパティ」を参照してください。

  7. [Add] をクリックします。

以下は、 number型の JSON構文です。 デフォルトのインデックス定義を以下のように置き換えます。 フィールドの詳細については、「フィールド プロパティ」を参照してください。

{
"mappings": {
"dynamic": true|false,
"fields": {
"<field-name>": {
"type": "number",
"representation": "int64|double",
"indexIntegers": true|false,
"indexDoubles": true|false
}
}
}
}

Atlas Search numberタイプには次のパラメーターがあります。

UI フィールド名
JSON Option
タイプ
必要性
説明
default

Data Type

type

string

必須

このフィールド型を識別する、人間が判読できるラベル。値はnumberでなければなりません。

Representation

representation

string

任意

インデックスを作成するフィールドのデータ型。 値は次のとおりです。

  • int64 - 精度を失うことなく大きな整数をインデックス化する場合と、double 値を整数に丸める場合。 この型を使用して大きな double 値をインデックスすることはできません。

  • double - 丸められずに大きな double 値をインデックス化する場合。

詳細については、以下の例を参照してください。

double

Index Integers

indexIntegers

ブール値

任意

int32int64 のタイプ値をインデックスインデックスか省略するかを示すフラグ。 値は true または false です。 これと indexDoubles のいずれかが true である必要があります。 詳細については、以下の例を参照してください。

true

Index Doubles

indexDoubles

ブール値

任意

double 型の値をインデックスインデックスか省略するかを示すフラグ。 値は true または false です。 これと indexIntegers のいずれかが true である必要があります。 詳細については、以下の例を参照してください。

true

次のインデックス定義の例では、サンプル データ内の複数のコレクションを使用します。 サンプル データがすでにクラスターにロードされている場合は、ビジュアル エディターとJSONエディターを使用してこれらのインデックスを構成できます。 ご希望の構成方法を選択したら、データベースとコレクションを選択し、インデックスを微調整してフィールド マッピングを追加します。

サンプル データセットsample_analytics.accountsコレクションの次のインデックス定義は、64 ビット整数値を持つaccount_idフィールドをインデックス化します。 次の例でも次のことが行われます。

  • account_idフィールドの他のすべての整数値をインデックス化します。

  • 任意の小数値を丸め、 account_idフィールドに小さな double 型の値をインデックスします。

  1. Add Field Mappingウィンドウで、 Field Nameドロップダウンからaccount_idを選択します。

  2. Data Typeドロップダウンをクリックし、Number を選択します。

  3. Number Propertiesを変更して、次のように設定します。

    • Representation int64 に設定されている場合にのみ使用できます。

    • Index Integers true に設定されている場合にのみ使用できます。

    • Index Doubles true に設定されている場合にのみ使用できます。

  4. [Add] をクリックします。

デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。

{
"mappings": {
"dynamic": false,
"fields": {
"account_id": {
"type": "number",
"representation": "int64"
}
}
}
}

サンプル データセットsample_analytics.accountsコレクションの次のインデックス定義では、整数値がインデックス化され、 account_idで double 値が省略されます。

  1. Add Field Mappingウィンドウで、 Field Nameドロップダウンからaccount_idを選択します。

  2. Data Typeドロップダウンをクリックし、Number を選択します。

  3. Number Propertiesを変更して、次のように設定します。

    • Representation int64 に設定されている場合にのみ使用できます。

    • Index Integers true に設定されている場合にのみ使用できます。

    • Index Doubles false に設定されている場合にのみ使用できます。

  4. [Add] をクリックします。

デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。

{
"mappings": {
"dynamic": false,
"fields": {
"account_id": {
"type": "number",
"representation": "int64",
"indexDoubles": false
}
}
}
}

サンプル データセットsample_airbnb.listingsAndReviewsコレクションの次のインデックス定義では、 double型の値がインデックス化され、 bathroomsフィールドの32ビットと64ビットの整数値が省略されます。

  1. Add Field Mappingウィンドウで、 Field Nameドロップダウンからbathroomsを選択します。

  2. Data Typeドロップダウンをクリックし、Number を選択します。

  3. Number Propertiesを変更して、次のように設定します。

    • Representation doubles に設定されている場合にのみ使用できます。

    • Index Integers false に設定されている場合にのみ使用できます。

    • Index Doubles true に設定されている場合にのみ使用できます。

  4. [Add] をクリックします。

デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。

{
"mappings": {
"dynamic": false,
"fields": {
"bathrooms": {
"type": "number",
"indexIntegers": false
}
}
}
}