定義
バージョン 7.0 の新機能 (6.0.7 以降でも利用可能)
既存のMongoDB SearchインデックスまたはMongoDB Vector Searchインデックスを更新します。
重要
mongosh メソッド
This page documents a mongosh method. This is not the documentation for database commands or language-specific drivers, such as Node.js.
データベースコマンドについては、updateSearchIndex コマンドを参照してください。
MongoDB API ドライバーについては、各言語の「MongoDB ドライバーのドキュメント」を参照してください。
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
- MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
MongoDB Enterprise 配置を実行中バージョン 8.2 以降の Kubernetes Operator
MongoDB Community 配置 バージョン 8.2 以降を実行中
自己管理型配置の詳細については、「 自己管理型配置に関するMongoDB Search 」を参照してください。
構文
コマンド構文:
db.<collection>.updateSearchIndex( <name>, { <definition> } )
コマンドフィールド
updateSearchIndex() 次のフィールドを取ります。
フィールド | タイプ | 必要性 | 説明 |
|---|---|---|---|
| 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 | 任意 | テキストが検索される前にクエリ テキストに適用するアナライザを指定します。 このフィールドを省略すると、インデックスは
|
| オブジェクト | 必須 | このインデックスの異なるパスにあるフィールドのインデックス方法を指定します。 |
| ブール値 | 任意 | このインデックスの 動的フィールドマッピング を有効または無効にします。 If set to
省略した場合、デフォルトは |
| ドキュメント | 条件付き | 動的マッピングが無効になっている場合にのみ必要です。 Specifies the fields to index. To learn more, see Define Field Mappings for a MongoDB Search Index. |
| 配列 | 任意 | このインデックスで使用するカスタム アナライザを指定します。 |
| ブール値または保存されたソース定義 | 任意 | Specifies document fields to store for queries performed using the returnedStoredSource option. You can store fields of all MongoDB Search Field Types on MongoDB Search. The
省略した場合、デフォルトは 詳しくは、 MongoDB Search インデックスに保存されたソース フィールドの定義 を参照してください。 |
| 任意 | インデックスで使用する シノニム マッピング を指定します。 シノニム(同意語) を設定すると、同じ意味または似た意味を持つ単語をインデックスして検索できます。 詳しくは、「 MongoDB Search インデックスでのシノニム マッピングの定義 」を参照してください。 |
ベクトル検索インデックスの定義構文
ベクトル検索のインデックス定義には次のフィールドが含まれます。
{ "fields": [ { "type": "vector" | "filter", "path": "<field-to-index>", "numDimensions": <number-of-dimensions>, "similarity": "euclidean" | "cosine" | "dotProduct" } ] }
ベクトル検索のインデックス定義フィールドの説明については、「 ベクトル検索のフィールドにインデックスを作成する方法 」を参照してください。
動作
updateSearchIndex() は、新しいインデックス定義でインデックスのビルドをトリガーします。 コマンドから応答を受け取ってから更新されたインデックスが準備完了するまでの間に遅延が発生する可能性があります。
新しいインデックスの構築中も、古いインデックス定義は引き続きクエリをサポートできます。 新しいインデックスの作成が完了すると、古いインデックスは使用できなくなります。 検索インデックスのステータスを確認するには、 $listSearchIndexes集計ステージを使用します。
アクセス制御
配置でアクセス制御を適用する場合、 updateSearchIndex()を実行しているユーザーは、データベースまたはコレクションに対するupdateSearchIndex特権アクションを持っている必要があります。
{ resource: { db : <database>, collection: <collection> }, actions: [ "updateSearchIndex" ] }
組み込みのreadWrite } ロールとrestoreロールによってupdateSearchIndex特権が付与されます。 次の例では、 qaデータベースでreadWriteロールを付与しています。
db.grantRolesToUser( "<user>", [ { role: "readWrite", db: "qa" } ] )
例
次の例では、新しいMongoDB Searchインデックスを作成し、そのインデックスを 更新します。
moviesコレクションにsearchIndex01という名前の検索インデックスを作成します。db.movies.createSearchIndex( "searchIndex01", { mappings: { dynamic: true }, storedSource: { exclude: [ "imdb.rating" ] } } ) searchIndex01インデックスを更新します。db.movies.updateSearchIndex( "searchIndex01", { mappings: { dynamic: true }, storedSource: { exclude: [ "movies" ] } } )