定義
バージョン 7.0 の新機能: (6.0.7 以降でも利用可能)
既存の Atlas SearchインデックスまたはAtlas ベクトル検索インデックスを更新します。
重要
mongosh メソッド
このページでは、mongosh メソッドについて記載しています。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません。
データベースコマンドについては、 updateSearchIndexコマンドを参照してください。
MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
構文
コマンド構文:
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 フィールドに適用するアナライザを指定します。 このフィールドを省略すると、インデックスは標準 アナライザを使用します。 |
| string | 任意 | テキストが検索される前にクエリ テキストに適用するアナライザを指定します。 このフィールドを省略すると、インデックスは
|
| オブジェクト | 必須 | このインデックスの異なるパスにあるフィールドのインデックス方法を指定します。 |
| ブール値 | 任意 | このインデックスの 動的フィールドマッピング を有効または無効にします。
省略した場合、デフォルトは |
| ドキュメント | 条件付き | 動的マッピングが無効になっている場合にのみ必要です。 インデックスを作成するフィールドを指定します。 詳しくは「フィールドマッピングの定義 」を参照してください。 |
| 配列 | 任意 | このインデックスで使用するカスタム アナライザを指定します。 |
| ブール値または保存されたソース定義 | 任意 | 返された StoredSource オプションを使用して実行されるクエリに保存するドキュメント フィールドを指定します。 Atlas Search ではすべてのMongoDB Search フィールド タイプ のフィールドを保存できます。
省略した場合、デフォルトは 詳しくは、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" } ] )
例
次の例では、Atlas 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" ] } } )