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

updateSearchIndex

項目一覧

  • 定義
  • 構文
  • コマンドフィールド
  • 検索インデックス定義構文
  • 動作
  • アクセス制御
  • 出力
updateSearchIndex

バージョン 7.0 の新機能: (6.0.7 以降でも利用可能

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

mongoshメソッド db.collection.updateSearchIndex()updateSearchIndexデータベースコマンドを囲むラッパーを提供します。

重要

コマンド構文:

db.runCommand(
{
updateSearchIndex: "<collection name>",
id: "<index Id>",
name: "<index name>",
definition: {
/* search index definition fields */
}
}
)

updateSearchIndex コマンドは、次のフィールドがあります。

フィールド
タイプ
必要性
説明
updateSearchIndex
string
必須
更新するインデックスを含むコレクションの名前。
id
string
条件付き

id 更新するインデックスの。

フィールドまたはid nameフィールドの いずれか を指定する必要があります。

name
string
条件付き

更新するインデックスの名前。

フィールドまたはid nameフィールドの いずれか を指定する必要があります。

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" } ]
)

updateSearchIndexコマンドが成功すると、次の結果が返されます。

{
ok: 1
}

重要

応答フィールドok: 1は、コマンドが成功したことを示します。 ただし、応答を受け取ってから更新されたインデックスが準備ができて、元のインデックスを置き換えるまでの間にタイムラグが生じる可能性があります。

検索インデックスのステータスを確認するには、 $listSearchIndexes集計ステージを使用します。

次の例では、 contactsコレクションでsearchIndex01という名前の検索インデックスを更新します。

db.runCommand( {
updateSearchIndex: "contacts",
name: "searchIndex01",
definition:
{
mappings: { dynamic: true },
storedSource: {
exclude: [ "directors", "imdb.rating" ]
}
}
} )

戻る

dropSearchIndex