定義
バージョン 7.0 の新機能: (6.0.7 以降でも利用可能)
指定されたコレクションに Atlas Searchインデックスまたは Atlas ベクトル検索インデックスを作成します。
重要
mongosh メソッド
このページでは、mongosh メソッドについて記載しています。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません。
データベースコマンドについては、 createSearchIndexesコマンドを参照してください。
MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
構文
コマンド構文:
db.<collection>.createSearchIndex( <name>, { <definition> } )
コマンドフィールド
createSearchIndex() 次のフィールドを取ります。
フィールド | タイプ | 必要性 | 説明 |
|---|---|---|---|
| string | 任意 | 作成する検索インデックスの名前。 単一のコレクションに同じ名前で複数のインデックスを作成することはできません。
|
| ドキュメント | 必須 | 作成するインデックスを説明するドキュメント。 |
検索インデックス定義構文
検索インデックスの定義には、次のフィールドがあります。
{ 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>" } ] }
フィールド | タイプ | 必要性 | 説明 |
|---|---|---|---|
| string | 任意 | インデックス作成時に string フィールドに適用するアナライザを指定します。 このフィールドを省略すると、インデックスは標準 アナライザを使用します。 |
| string | 任意 | テキストが検索される前にクエリ テキストに適用するアナライザを指定します。 このフィールドを省略すると、インデックスは
|
| オブジェクト | 必須 | このインデックスの異なるパスにあるフィールドのインデックス方法を指定します。 |
| ブール値 | 任意 | このインデックスの 動的フィールドマッピング を有効または無効にします。
省略した場合、デフォルトは |
| ドキュメント | 条件付き | 動的マッピングが無効になっている場合にのみ必要です。 インデックスを作成するフィールドを指定します。 詳しくは「フィールドマッピングの定義 」を参照してください。 |
| 配列 | 任意 | このインデックスで使用するカスタム アナライザを指定します。 |
| ブール値または保存されたソース定義 | 任意 | 返された StoredSource オプションを使用して実行されるクエリに保存するドキュメント フィールドを指定します。 Atlas Search ではすべてのMongoDB Search フィールド タイプ のフィールドを保存できます。
省略した場合、デフォルトは 詳しくは、MongoDB Search インデックスに保存されたソース フィールドの定義を参照してください。 |
| 任意 | インデックスで使用するシノニム マッピングを指定します。 シノニム(同意語) を設定すると、同じ意味または似た意味を持つ単語をインデックスして検索できます。 詳しくは、 MongoDB Search インデックスでのシノニム マッピングの定義 を参照してください。 |
動作
createSearchIndex() インデックスの構築をトリガーします。 コマンドからの応答を受け取ってから、インデックスが準備完了するまでの間に遅延が発生する可能性があります。
検索インデックスのステータスを確認するには、 $listSearchIndexes集計ステージを使用します。
アクセス制御
配置でアクセス制御を適用する場合、 createSearchIndex()を実行しているユーザーは、データベースまたはコレクションに対するcreateSearchIndexes特権アクションを持っている必要があります。
{ resource: { db : <database>, collection: <collection> }, actions: [ "createSearchIndexes" ] }
組み込みのreadWriteロールにはcreateSearchIndexes特権が付与されます。 次の例では、 productsデータベースでaccountUser01にreadWriteロールを付与しています。
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" } } } } )