Docs Menu
Docs Home
/
MongoDB マニュアル
/ / /

db.collection.updateSearchIndex()

項目一覧

  • 定義
  • 構文
  • コマンドフィールド
  • 検索インデックス定義構文
  • 動作
  • アクセス制御
db.collection.updateSearchIndex()

バージョン 6.0.7 の新機能

既存の Atlas Search インデックスを更新します。

重要

このコマンドは、 MongoDB Atlasでホストされている配置でのみ実行でき、少なくとも M 10の Atlas クラスター階層が必要です。

重要

mongosh メソッド

このページでは、mongosh メソッドについて記載しています。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません

データベースコマンドについては、 updateSearchIndexコマンドを参照してください。

MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。

コマンド構文:

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
任意

テキストが検索される前にクエリ テキストに適用するアナライザを指定します。

このフィールドを省略すると、インデックスはanalyzerフィールドに指定されているのと同じアナライザを使用します。

searchAnalyzerフィールドとanalyzer フィールドの両方を省略すると、インデックスは 標準 アナライザを使用します。

mappings
オブジェクト
任意
このインデックスの異なるパスにあるフィールドのインデックス方法を指定します。
mappings.dynamic
ブール値
任意

このインデックスの 動的フィールドマッピング を有効または無効にします。

trueに設定されている場合、インデックスにはサポートされているデータ型を含むすべてのフィールドが含まれます。

falseに設定されている場合は、 mappings.fieldsを使用してインデックスを作成するフィールドを個別に指定する必要があります。

省略した場合、デフォルトは false になります。

mappings.fields
ドキュメント
条件付き

動的マッピングが無効になっている場合にのみ必要です。

インデックスを作成するフィールドを指定します。 詳しくは「フィールドマッピングの定義 」を参照してください。

analyzers
配列
任意
このインデックスで使用するカスタム アナライザを指定します。
storedSource
ブール値または保存されたソース定義
任意

返された StoredSource オプションを使用して実行されるクエリに保存するドキュメント フィールドを指定します。

Atlas Search ではすべてのデータ型のフィールドを保存できます。 storedSourceの値は次のいずれかになります。

  • true: すべてのフィールドを保存

  • false、フィールドを保存しない場合

  • ストレージからincludeまたはexcludeにフィールドを指定するオブジェクト

省略した場合、デフォルトは false になります。

詳しくは、 「 Atlas Search インデックスに保存されたソース フィールドの定義 」を参照してください。

synonyms
任意

インデックスで使用するシノニム マッピングを指定します。 シノニム(同意語) を設定すると、同じ意味または似た意味を持つ単語をインデックスして検索できます。

詳しくは、 「 Atlas Search インデックスでのシノニム マッピングの定義 」を参照してください。

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 インデックスを新規作成し、そのインデックスを更新します。

  1. moviesコレクションにsearchIndex01という名前の検索インデックスを作成します。

    db.movies.createSearchIndex(
    "searchIndex01",
    {
    mappings: { dynamic: true },
    storedSource: {
    exclude: [ "imdb.rating" ]
    }
    }
    )
  2. searchIndex01インデックスを更新します。

    db.movies.updateSearchIndex(
    "searchIndex01",
    {
    mappings: { dynamic: true },
    storedSource: {
    exclude: [ "movies" ]
    }
    }
    )

戻る

db.collection.getSearchIndexes