Database Manual / Reference / mongosh Methods / MongoDB Search Index

db.collection.updateSearchIndex() (mongosh method方法)

Definition定义

db.collection.updateSearchIndex()

New in version 7.0.在版本7.0中新增。 (Also available starting in 6.0.7从6.0.7开始也可用)

Updates an existing MongoDB Search index or Vector Search index.更新现有的MongoDB搜索索引矢量搜索索引

Important

mongosh Method方法

This page documents a mongosh method. This is not the documentation for database commands or language-specific drivers, such as Node.js.本页记录了一种mongosh方法。这不是数据库命令或特定语言驱动程序(如Node.js)的文档。

For the database command, see the updateSearchIndex command.有关数据库命令,请参阅updateSearchIndex命令。

For MongoDB API drivers, refer to the language-specific MongoDB driver documentation.有关MongoDB API驱动程序,请参阅特定语言的MongoDB驱动程序文档

Compatibility兼容性

This method is available in deployments hosted in the following environments:此方法在以下环境中托管的部署中可用:

  • MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud:云中MongoDB部署的完全托管服务

Important

This command is not supported in serverless instances. For more information, see Unsupported Commands.无服务器实例不支持此命令。有关详细信息,请参阅不支持的命令

Syntax语法

Command syntax:命令语法:

db.<collection>.updateSearchIndex(
<name>,
{
<definition>
}
)

Command Fields命令字段

updateSearchIndex() takes these fields:接受这些字段:

Field字段Type类型Necessity必要性Description描述
namestring字符串Required必需Name of the search index to update.要更新的搜索索引的名称。
definitiondocument文档Required必需

Document describing the index to create. The definition syntax depends on whether you create a standard search index or a Vector Search index. For the definition syntax, see:描述要创建的索引的文档。definition语法取决于您创建的是标准搜索索引还是矢量搜索索引。有关definition语法,请参阅:

Search Index Definition Syntax搜索索引定义语法

The search index definition takes the following fields:搜索索引定义包含以下字段:

{
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>"
} ]
}
Field字段Type类型Necessity必要性Description描述
analyzerstring字符串Optional可选

Specifies the analyzer to apply to string fields when indexing.指定索引时应用于字符串字段的分析器

If you omit this field, the index uses the standard analyzer.如果省略此字段,则索引将使用标准分析器

searchAnalyzerstring字符串Optional可选

Specifies the analyzer to apply to query text before the text is searched.指定在搜索文本之前应用于查询文本的分析器

If you omit this field, the index uses the same analyzer specified in the analyzer field.如果省略此字段,则索引将使用analyzer字段中指定的相同分析器。

If you omit both the searchAnalyzer and the analyzer fields, the index uses the standard analyzer.如果同时省略searchAnalyzeranalyzer字段,则索引将使用标准分析器

mappingsobjectRequired必需Specifies how to index fields on different paths for this index.指定如何为此索引的不同路径上的字段建立索引。
mappings.dynamicboolean布尔值Optional可选

Enables or disables dynamic field mapping for this index.启用或禁用此索引的动态字段映射。

If set to true, the index contains all fields containing supported data types.如果设置为true,则索引包含所有包含支持的数据类型的字段。

If set to false, you must specify individual fields to index using mappings.fields.如果设置为false,则必须使用mappings.fields指定要索引的单个字段。

If omitted, defaults to false.如果省略,则默认为false

mappings.fieldsdocument文档Conditional条件式

Required only if dynamic mapping is disabled.仅当禁用动态映射时才需要。

Specifies the fields to index. To learn more, see Define Field Mappings.指定要索引的字段。要了解更多信息,请参阅定义字段映射

analyzersarray数组Optional可选Specifies the Custom Analyzers to use in this index.指定要在此索引中使用的自定义分析器
storedSourceboolean or Stored Source DefinitionOptional可选

Specifies document fields to store for queries performed using the returnedStoredSource option.为使用returnedStoredSource选项执行的查询指定要存储的文档字段。

You can store fields of all MongoDB Search Field Types on MongoDB Search. The storedSource value can be one of these:您可以在MongoDB搜索上存储所有MongoDB搜索字段类型的字段。storedSource值可以是以下值之一:

  • true, to store all fields,存储所有字段
  • false, to not store any fields,不存储任何字段
  • An object that specifies the fields to include or exclude from storage指定要包含或从存储中排除的字段的对象

If omitted, defaults to false.如果省略,则默认为false

To learn more, see Define Stored Source Fields in Your MongoDB Search Index.要了解更多信息,请参阅在MongoDB搜索索引中定义存储的源字段

synonymsarray of Synonym Mapping Definitions同义词映射定义数组Optional可选

Specifies synonym mappings to use in your index. Configuring synonyms allows you to index and search for words that have the same or a similar meaning.指定要在索引中使用的同义词映射。配置同义词允许您索引和搜索具有相同或相似含义的单词。

To learn more, see Define Synonym Mappings in Your MongoDB Search Index.要了解更多信息,请参阅在MongoDB搜索索引中定义同义词映射

Vector Search Index Definition Syntax矢量搜索索引定义语法

The vector search index definition takes the following fields:向量搜索索引定义包含以下字段:

{
"fields": [
{
"type": "vector" | "filter",
"path": "<field-to-index>",
"numDimensions": <number-of-dimensions>,
"similarity": "euclidean" | "cosine" | "dotProduct"
}
]
}

For explanations of vector search index definition fields, see How to Index Fields for Vector Search.有关矢量搜索索引定义字段的说明,请参阅如何为矢量搜索的字段建立索引

Behavior行为

updateSearchIndex() triggers an index build with the new index definition. There may be a delay between when you receive a response from the command and when the updated index is ready.updateSearchIndex()使用新的索引定义触发索引构建。从收到命令的响应到更新的索引准备就绪之间可能会有延迟。

The old index definition can still support queries while the new index is being built. Once the new index finishes building, the old index is no longer usable. To see the status of your search indexes, use the $listSearchIndexes aggregation stage.在构建新索引时,旧的索引定义仍然可以支持查询。一旦新索引构建完成,旧索引就不再可用。要查看搜索索引的状态,请使用$listSearchIndexes聚合阶段。

Access Control访问控制

If your deployment enforces access control, the user running updateSearchIndex() must have the updateSearchIndex privilege action on the database or collection:如果部署强制执行访问控制,则运行updateSearchIndex()的用户必须对数据库或集合具有updateSearchIndex权限操作:

{
resource: {
db : <database>,
collection: <collection>
},
actions: [ "updateSearchIndex" ]
}

The built-in readWrite and restore roles provide the updateSearchIndex privilege. The following example grants the readWrite role on the qa database:内置的readWriterestore角色提供updateSearchIndex权限。以下示例授予qa数据库上的readWrite角色:

db.grantRolesToUser(
"<user>",
[ { role: "readWrite", db: "qa" } ]
)

Example示例

The following example creates a new MongoDB Search index and then updates that index.以下示例创建一个新的MongoDB搜索索引,然后更新该索引。

  1. Create a search index named searchIndex01 on the movies collection:movies集合上创建一个名为searchIndex01的搜索索引:

    db.movies.createSearchIndex(
    "searchIndex01",
    {
    mappings: { dynamic: true },
    storedSource: {
    exclude: [ "imdb.rating" ]
    }
    }
    )
  2. Update the searchIndex01 index:更新searchIndex01索引:

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