Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

db.collection.createSearchIndex()

項目一覧

  • 定義
  • 構文
  • コマンドフィールド
  • 検索インデックス定義構文
  • 動作
  • アクセス制御
  • すべてのフィールドに検索インデックスを作成する
  • 言語アナライザによる検索インデックスの作成
  • デフォルト名で検索インデックスを作成
db.collection.createSearchIndex()

バージョン 7.0 の新機能: (6.0.7 以降でも利用可能

指定されたコレクションに Atlas Search インデックスを作成します。

重要

このコマンドは、 MongoDB Atlasでホストされている配置でのみ実行でき、少なくとも M 10の Atlas クラスター階層が必要です。

重要

mongosh メソッド

このページでは、mongosh メソッドについて記載しています。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません

データベースコマンドについては、 createSearchIndexesコマンドを参照してください。

MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。

コマンド構文:

db.<collection>.createSearchIndex(
<name>,
{
<definition>
}
)

createSearchIndex() 次のフィールドを取ります。

フィールド
タイプ
必要性
説明
name
string
任意

作成する検索インデックスの名前。

単一のコレクションに同じ名前で複数のインデックスを作成することはできません。

nameを指定しない場合、インデックスの名前はdefaultになります。

definition
ドキュメント
必須
作成するインデックスを説明するドキュメント。 definition構文の詳細については、「検索インデックス定義構文 」を参照してください。

検索インデックスの定義には、次のフィールドがあります。

{
analyzer: "<analyzer-for-index>",
searchAnalyzer: "<analyzer-for-query>",
mappings: {
dynamic: <boolean>,
fields: { <field-definition> }
},
analyzers: [ <custom-analyzer> ],
storedSource: <boolean> | {
<stored-source-definition>
},
synonyms: [ {
name: "<synonym-mapping-name>",
source: {
collection: "<source-collection-name>"
},
analyzer: "<synonym-mapping-analyzer>"
} ]
}
フィールド
タイプ
必要性
説明
analyzer
string
任意

インデックス作成時に string フィールドに適用するアナライザを指定します。

このフィールドを省略すると、インデックスは標準 アナライザを使用します。

searchAnalyzer
string
任意

テキストが検索される前にクエリ テキストに適用するアナライザを指定します。

このフィールドを省略すると、インデックスはanalyzerフィールドに指定されているのと同じアナライザを使用します。

searchAnalyzerフィールドとanalyzer フィールドの両方を省略すると、インデックスは 標準 アナライザを使用します。

mappings
オブジェクト
任意
このインデックスの異なるパスにあるフィールドのインデックス方法を指定します。
mappings.dynamic
ブール値
任意

このインデックスの 動的フィールドマッピング を有効または無効にします。

trueに設定されている場合、インデックスにはサポートされているデータ型を含むすべてのフィールドが含まれます。

falseに設定されている場合は、 mappings.fieldsを使用してインデックスを作成するフィールドを個別に指定する必要があります。

省略した場合、デフォルトは false になります。

mappings.fields
ドキュメント
条件付き

動的マッピングが無効になっている場合にのみ必要です。

インデックスを作成するフィールドを指定します。 詳しくは「フィールドマッピングの定義 」を参照してください。

analyzers
配列
任意
このインデックスで使用するカスタム アナライザを指定します。
storedSource
ブール値または保存されたソース定義
任意

返された StoredSource オプションを使用して実行されるクエリに保存するドキュメント フィールドを指定します。

Atlas Search ではすべてのデータ型のフィールドを保存できます。 storedSourceの値は次のいずれかになります。

  • true: すべてのフィールドを保存

  • false、フィールドを保存しない場合

  • ストレージからincludeまたはexcludeにフィールドを指定するオブジェクト

省略した場合、デフォルトは false になります。

詳しくは、 「 Atlas Search インデックスに保存されたソース フィールドの定義 」を参照してください。

synonyms
任意

インデックスで使用するシノニム マッピングを指定します。 シノニム(同意語) を設定すると、同じ意味または似た意味を持つ単語をインデックスして検索できます。

詳しくは、 「 Atlas Search インデックスでのシノニム マッピングの定義 」を参照してください。

createSearchIndex() インデックスの構築をトリガーします。 コマンドからの応答を受け取ってから、インデックスが準備完了するまでの間に遅延が発生する可能性があります。

検索インデックスのステータスを確認するには、 $listSearchIndexes集計ステージを使用します。

配置でアクセス制御を適用する場合、 createSearchIndex()を実行しているユーザーは、データベースまたはコレクションに対するcreateSearchIndexes特権アクションを持っている必要があります。

{
resource: {
db : <database>,
collection: <collection>
},
actions: [ "createSearchIndexes" ]
}

組み込みのreadWriteロールにはcreateSearchIndexes特権が付与されます。 次の例では、 productsデータベースでaccountUser01readWriteロールを付与しています。

db.grantRolesToUser(
"accountUser01",
[ { role: "readWrite", db: "products" } ]
)

次の例では、 moviesコレクションにsearchIndex01という名前の検索インデックスを作成します。

db.movies.createSearchIndex(
"searchIndex01",
{ mappings: { dynamic: true } }
)

インデックス定義でmappings: { dynamic: true }が指定されています。つまり、インデックスには コレクション内のデータ型をサポートしているすべてのフィールドが含まれています。

言語アナライザは、インデックスを作成するのに十分な重要ではない単語であるストップワードを導入します。

次の例では、 carsコレクションにfrenchIndex01という名前の検索インデックスを作成し、 frフィールドにlucene.frenchアナライザを指定します。

db.cars.createSearchIndex(
"frenchIndex01",
{
mappings: {
fields: {
subject: {
fields: {
fr: {
analyzer: "lucene.french",
type: "string"
}
},
type: "document"
}
}
}
}
)

言語アナライザの詳細については、「言語アナライザ 」を参照してください。

次のcreateSearchIndex()メソッドでは、インデックス定義のみを指定し、インデックス名を省略します。 コマンドは、 foodコレクションにdefaultという名前の検索インデックスを作成します。

db.food.createSearchIndex(
{
mappings: {
fields: {
title: {
type: "string"
}
}
}
}
)

戻る

Atlas Search インデックス