Docs Menu

GeoJSON オブジェクトのインデックス作成方法

Atlas Search geoタイプを使用して、地理的ポイントをインデックスし、座標を形成できます。 このタイプの場合、インデックス フィールドはGeoJSONオブジェクトである必要があります。 geoShape 演算子と geoWithin 演算子 を使用して、タイプgeo のインデックス付きフィールドをクエリできます。

Atlas Search は、 geoタイプのフィールドを動的にインデックスしません。 フィールドのインデックスを作成するには、 静的マッピング を使用する 必要 があります。geoAtlas UI のビジュアル エディターまたはJSON エディターを使用して、 geo型のフィールドをインデックスできます。

geoタイプのインデックスを定義するには、Atlas UI で希望する構成方法を選択し、データベースとコレクションを選択します。

  1. インデックスを設定するには、 Refine Your Indexをクリックします。

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

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

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

    注意

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

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

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

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

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

{
"mappings": {
"dynamic": false,
"fields": {
"<field-name>": {
"indexShapes": true|false,
"type": "geo"
}
}
}
}

Atlas Search geo型は次のパラメータを取ります。

オプション
タイプ
必要性
説明
default

type

string

必須

このフィールド型を識別する、人間が判読できるラベル。 UI 値はGeoで、 JSON値はgeoである必要があります。

indexShapes

ブール値

任意

シェイプのインデックスを作成するかどうかを示すフラグ。 デフォルトでは、Atlas Search は次のようになります。

  • ネストされている場合でも、ポイントのインデックスを作成します。

  • 線や多角形などの形状ジオメトリのインデックスは作成されません。

値は次のとおりです。

  • trueは形状と点をインデックス化します

  • falseのみをインデックス化する場合:

false

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

次のインデックス定義では、Atlas Search geoShapeおよびgeoWithin演算子を使用して、そのフィールドに対するクエリをサポートするために、 address.locationフィールドをgeoタイプとしてインデックス化します。

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

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

  3. Geo Propertiesを変更して、 Index Shapesの値をtrueに設定します。

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

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

1{
2 "mappings": {
3 "fields": {
4 "address": {
5 "type": "document",
6 "fields": {
7 "location": {
8 "indexShapes": true,
9 "type": "geo"
10 }
11 }
12 }
13 }
14 }
15}

その他のインデックス定義例も参照してください