Docs Menu
Docs Home
/ /

フィールド マッピングの定義

MongoDB Searchインデックスを作成するときに、次の方法を使用してインデックスを作成するフィールドを指定できます。

  • 動的マッピング: MongoDB Search を有効にして、デフォルトまたは構成されたフィールドタイプのセットに基づいてすべてのフィールドを自動的にインデックス(typeSet )。

  • 静的マッピング:インデックスフィールドを指定できるようにします。

デフォルトでは 、 MongoDB Search は、レプリカセットまたは単一のシャード上の 2.1 00 億インデックスオブジェクトを超えるインデックスの変更のレプリケートを停止します。ここでは、インデックス作成されたドキュメントまたはネストされた embeddedDocument はそれぞれ 1 つのオブジェクトとしてカウントされます。つまり、インデックスは引き続きクエリ可能ですが、古い結果が生じる可能性があります。

2.1インデックスオブジェクトが 最上位ドキュメントまたは埋め込みドキュメントである場合、 00 億オブジェクトを超える可能性のあるフィールドのインデックスを計画する場合は、 numPartionsインデックスオプションを使用してインデックスを分割します(検索ノード配置でのみサポートされています)または クラスターをシャーディングします。

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

次の構文は、 MongoDB Search が 動的マッピングと静的マッピングを使用してフィールドにインデックスを作成する方法を示しています。動的マッピングと静的マッピングについて詳しくは、 動的マッピングと静的マッピングを参照してください。

1{
2 "mappings": {
3 "dynamic": true|false | {
4 "typeSet": "<typeset-name>"
5 },
6 "fields": {
7 "<field-name>": {
8 "type": "<field-type>",
9 ...
10 },
11 ...
12 }
13 },
14 "typeSets": [
15 {
16 "name": "<typeset-name>",
17 "types": [
18 {
19 "type": "<field-type>",
20 ...
21 },
22 ...
23 ]
24 },
25 ...
26 ]
27}

MongoDB Search は、次のコマンドを使用して構成できます。

  • デフォルトまたは構成されたタイプのセットに基づいてフィールドを自動的にインデックスための 動的マッピング (typeSet

  • インデックスされたフィールドのみへの静的マッピング

静的マッピングと動的マッピングを使用することもできます。静的マッピングは、動的マッピング構成を上書きします。

MongoDB Search の動的マッピングを使用すると、データ内のフィールドを自動的かつ再帰的にインデックスようにMongoDB Search を構成できます。フィールドは、デフォルトのタイプセットに基づいて、または typeSet を構成することでインデックス化できます。

動的マッピングを有効または構成できます。

  • ドキュメント全体に適用するルート mappings レベル。

  • [推奨] document指定されたオブジェクトに適用する フィールドタイプ内で。

  • [推奨]フィールドタイプは、要素単位のクエリ比較を必要とするオブジェクトの指定された配列に適用するために、 embeddedDocumentsフィールドタイプ内で使用します($elemMatch と同様)。

注意

ベストプラクティス

動的マッピングでは、多数の一意のフィールドのインデックスが作成されるため、占有するディスク容量が多くなり、パフォーマンスが低下する可能性があります。定期的に変更されるフィールドや不明なフィールドのインデックスが必要な場合にのみ、動的マッピングを使用してください。動的マッピングは、親ドキュメントレベルではなく、常にドキュメント内で使用してください。

動的マッピング を使用してデータをインデックスする場合、

  • MongoDB Search は、データ内の documentオブジェクト内の typeSet によってサポートされているすべてのネストされたフィールドも動的にインデックス化します。

  • フィールドに多形データが含まれている場合、 MongoDB Search は、インデックスで使用される typeSet でサポートされているすべての型としてフィールドを自動的にインデックス化します。フィールドに typeSet でサポートされていない型のデータが含まれている場合、 MongoDB Search はそのデータのインデックスしません。

MongoDB SearchtypeSet dynamictrueでは、 がtypeSet に設定されている場合、デフォルトの が使用されます。デフォルトの では、 MongoDB Search は BSON型をMongoDB Searchフィールド型としてインデックス化します。次の表は、デフォルトの を使用する場合にMongoDB Search がMongoDBtypeSet Searchフィールドタイプとして自動的にインデックスを作成するBSONタイプを示しています。 MongoDB Search は、配列とオブジェクトに含まれている場合は、次のBSON types も自動的にインデックス化します。

BSON Type
MongoDB Search フィールド タイプ

ブール値

日付

Double、32ビット整数、64ビット整数

ObjectId

文字列

UUID

null

以下は、動的マッピングでデフォルトのタイプセットを有効にするための構文です。

1{
2 "mappings": {
3 "dynamic": true | {
4 "typeSet": "<typset-name>"
5 },
6 "typeSets": [
7 {
8 "name": "<typset-name>",
9 "types": [
10 {
11 "type": "<field-type>"
12 },
13 ...
14 ]
15 },
16 ...
17 ]
18 }
19}

デフォルトの を使用してすべてのフィールドにインデックスを作成するインデックス例については、「typeSet 動的マッピングの例 」を参照してください。

重要

動的マッピングを構成可能な機能はプレビュー段階です。機能および関連するドキュメントは、プレビュー期間中にいつでも変更される可能性があります。詳しくは、「 プレビュー機能 」を参照してください。

を構成して、動的にインデックスするMongoDBtypeSet Searchフィールドタイプを指定します。任意のBSONタイプを自動的にインデックス化するように構成できます。ただし、{フィールドフィールドはMongoDB外です。documentembeddedDocuments

typeSet の構文は次のとおりです。

1{
2 "mappings": {
3 "dynamic": {
4 "typeSet": "<typeset-name>"
5 },
6 "fields": {
7 "<field-name>": {
8 "type": "<field-type>",
9 ...
10 },
11 ...
12 }
13 },
14 "typeSets": [
15 {
16 "name": "<typeset-name>",
17 "types": [
18 {
19 "type": "<field-type>"
20 },
21 ...
22 ]
23 },
24 ...
25 ]
26}

typeSet を設定する前に、以下の点を考慮してください。

  • 同じ typeSetオブジェクト内で、同じフィールドタイプを複数回定義することはできません。各フィールド型に対して 1 つの typeSet 定義のみを構成できます。

    例、同じ typeSet 定義内で number タイプに複数の構成を定義することはできません。

  • multiアナライザを使用して動的マッピングを構成できます。

Atlas UI Visual Editor から typeSet を構成することはできません。代わりに、Atlas UI JSON Editor を使用してください。

カスタム 構成の使用を示すインデックスの例については、「typeSet 動的マッピングの例 」を参照してください。

静的マッピングを使用して、動的にインデックスを作成mappings.fields したくない フィールドのインデックスオプションを設定したり、1 つのフィールドをインデックス内の他のフィールドと独立して構成したりします。静的マッピングを使用する場合、 MongoDB Search は で指定したフィールドのみをインデックス化します。静的マッピングを使用して、インデックスの作成からフィールドを除外することもできます。

静的マッピングを使用して一部のフィールドのみのインデックスオプションを構成するには、mappings.dynamicfalse に設定し、インデックスを作成するフィールドごとにフィールド名、データ型などの構成オプションを指定します。任意の順序でフィールドを指定できます。

mappings.dynamic フィールドを省略すると、デフォルトで false になります。

1{
2 "mappings": {
3 "dynamic": true|false,
4 "fields": {
5 "<field-name>": {
6 "type": "<field-type>",
7 ...
8 },
9 ...
10 }
11 }
12}

ネストされたフィールドのインデックスを定義するには、そのネストされたフィールドの各親フィールドのマッピングを定義する必要があります。ドット表記を使用してネストされたフィールドを静的にインデックスことはできません。例については、以下の 例 または 組み合わせマッピングの例 を参照してください。

静的マッピングを使用して、フィールドを複数のタイプとしてインデックスできます。フィールドを複数のタイプとしてインデックスには、フィールドのフィールド定義配列でタイプを定義します。静的マッピングを使用して、サポートされているタイプとして任意のフィールドをインデックスできます。詳しくは、 「 MongoDB Search フィールド タイプ 」を参照してください。

次の例では、フィールドを複数のタイプとしてインデックスを作成するためのフィールド定義を示しています。

1{
2 "mappings": {
3 "dynamic": true|false | {
4 "typeSet": "<type-set-name>"
5 },
6 "fields": {
7 "<field-name>": [
8 {
9 "type": "<field-type>",
10 ...
11 },
12 {
13 "type": "<field-type>",
14 ...
15 },
16 ...
17 ],
18 ...
19 }
20 }.
21 "typeSets": [
22 {
23 "name": "<typeset-name>",
24 "types": [
25 {
26 "type": "<field-type>"
27 },
28 ...
29 ]
30 },
31 ...
32 ]
33}

静的マッピングを示すその他のインデックス例については、「 静的マッピングの例 」を参照してください。

MongoDB Search は次のBSONデータ型をサポートしていません。

  • Decimal128

  • JavaScript コード(スコープ付き)

  • Max key

  • Min key

  • 正規表現

  • タイムスタンプ

MongoDB Search は、mongotstring 型のフィールドを自動的に保存します。インデックス定義で [ MongoDB Search インデックスに保存されたソース フィールドを定義する ] オプションを使用して、サポートされているすべての データ型 のフィールドをMongoDB Search に保存できます。mongot とMongoDB Searchノードのアーキテクチャの詳細については、 MongoDB Search 配置オプション を参照してください。

次の表は、サポートされているBSONデータ型 と、 BSONデータ型のインデックスに使用できるMongoDB Searchフィールド型 を示しています。以下の表では、フィールド値をクエリするために使用できる 演算子 と コレクター も確認できます。

BSON 型
MongoDB Search フィールド タイプ
演算子とコレクター

配列内のデータ型をサポートする演算子。

ブール値

日付

日付

Double

Double

Double

32 ビット整数

32 ビット整数

64 ビット整数

64 ビット整数

null

該当なし

オブジェクト

オブジェクト内のフィールド型をサポートする演算子。

オブジェクト

埋め込みドキュメント(オブジェクトの配列用)

ObjectId

文字列

文字列

文字列

文字列

これらの演算子は文字列の配列をサポートしていません。

MongoDB Search は、静的にインデックスが付けられたフィールドと動的にインデックスが付けられたフィールドの両方の null 値を自動的にインデックス化するため、 MongoDB Search には null 値をインデックス化するためのフィールドタイプが含まれていません。

非推奨。非推奨のファセットフィールド型と更新されたカウンターの詳細については、「 ファセットのフィールド型の比較 」を参照してください。

注意

サポートされているすべてのデータ型のフィールドをMongoDB Search に保存するには、storedSource オプションを使用します。

次の例では、sample_mflix.movies コレクションを使用して、動的マッピングと静的マッピングを使用してインデックスを作成するフィールドを構成する方法を示します。サンプルデータをロードすると、コレクションにこれらのインデックスを作成できます。 MongoDB Search インデックスの作成方法については、 「 MongoDB Search クイック スタート 」を参照してください。

以下のインデックス定義例は、動的マッピングを示しています。

以下のインデックス定義例は、静的マッピングを示しています。

次のインデックス定義例では、動的マッピングと静的マッピングを組み合わせています。

戻る

トークン フィルター