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 | 任意 | 作成する検索インデックスの名前。 単一のコレクションに同じ名前で複数のインデックスを作成することはできません。
|
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 | 任意 | テキストが検索される前にクエリ テキストに適用するアナライザを指定します。 このフィールドを省略すると、インデックスは
|
mappings | オブジェクト | 任意 | このインデックスの異なるパスにあるフィールドのインデックス方法を指定します。 |
mappings.dynamic | ブール値 | 任意 | このインデックスの 動的フィールドマッピング を有効または無効にします。
省略した場合、デフォルトは |
mappings.fields | ドキュメント | 条件付き | 動的マッピングが無効になっている場合にのみ必要です。 インデックスを作成するフィールドを指定します。 詳しくは「フィールドマッピングの定義 」を参照してください。 |
analyzers | 配列 | 任意 | このインデックスで使用するカスタム アナライザを指定します。 |
storedSource | ブール値または保存されたソース定義 | 任意 | |
synonyms | 任意 | インデックスで使用するシノニム マッピングを指定します。 シノニム(同意語) を設定すると、同じ意味または似た意味を持つ単語をインデックスして検索できます。 |
動作
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" } } } } )