db.collection.updateSearchIndex()
定義
バージョン 7.0 の新機能: (6.0.7 以降でも利用可能)
既存の Atlas Search インデックスを更新します。
重要
mongosh メソッド
このページでは、mongosh
メソッドについて記載しています。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません。
データベースコマンドについては、 updateSearchIndex
コマンドを参照してください。
MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
重要
This command is not supported in M0, M2, and M5 clusters or in serverless instances. 詳細については、「サポートされていないコマンド 」を参照してください。
構文
コマンド構文:
db.<collection>.updateSearchIndex( <name>, { <definition> } )
コマンドフィールド
updateSearchIndex()
次のフィールドを取ります。
フィールド | タイプ | 必要性 | 説明 |
---|---|---|---|
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 | 任意 | インデックスで使用するシノニム マッピングを指定します。 シノニム(同意語) を設定すると、同じ意味または似た意味を持つ単語をインデックスして検索できます。 |
動作
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" ] } } )