定義
バージョン 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 ではすべての bson データ チャートのフィールドを保存できます。 省略した場合、デフォルトは | |
| 任意 | インデックスで使用するシノニム マッピングを指定します。 シノニム(同意語) を設定すると、同じ意味または似た意味を持つ単語をインデックスして検索できます。 詳細については、 シノニム-リファレンス を参照してください。 |
動作
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" } } } } )