Database Manual / Reference / Database Commands / MongoDB Search

updateSearchIndex (database command数据库命令)

Definition定义

updateSearchIndex

New in version 7.0.在版本7.0中新增。 (Also available starting in 6.0.7)

Updates an existing MongoDB Search index.更新现有的MongoDB搜索索引

The mongosh method db.collection.updateSearchIndex() provides a wrapper around the updateSearchIndex database command.mongosh方法db.collection.updateSearchIndex()updateSearchIndex数据库命令提供了一个包装器。

Important

This command can only be run on a deployment hosted on MongoDB Atlas.此命令只能在MongoDB Atlas上托管的部署上运行。

Syntax语法

Command syntax:命令语法:

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

Command Fields命令字段

The updateSearchIndex command takes the following fields:updateSearchIndex命令包含以下字段:

Field字段Type类型Necessity必要性Description描述
updateSearchIndexstring字符串Required必需Name of the collection that contains the index to update.包含要更新的索引的集合的名称。
idstring字符串Conditional附条件

id of the index to update.要更新的索引的id。

You must specify either the id or name field.您必须指定idname字段。

namestring字符串Conditional附条件

Name of the index to update.要更新的索引的名称。

You must specify either the id or name field.您必须指定idname字段。

typestring字符串Optional可选

Type of the index. Value must be one of the following options:索引的类型。值必须是以下选项之一:

  • search - for MongoDB Search index.用于MongoDB搜索索引。
  • vectorSearch - for Vector Search index.用于矢量搜索索引。

The value that you specify must match the type of index that you want to update. You can't change the index type.您指定的值必须与要更新的索引类型匹配。您无法更改索引类型。

This field is not supported for updating an index on a collection in the Atlas cluster.此字段不支持更新Atlas集群中集合的索引。

definitiondocument文档Required必需

Document describing the updated search index definition. The specified definition replaces the prior definition in the search index.描述更新的搜索索引定义的文档。指定的定义将替换搜索索引中的先前定义。

For details on definition syntax, see Search Index Definition Syntax.有关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 Definition布尔值或存储源定义Optional可选

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搜索索引中定义同义词映射

Behavior行为

The updateSearchIndex command 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 the updateSearchIndex command 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" } ]
)

Output输出

A successful updateSearchIndex command returns the following:成功的updateSearchIndex命令返回以下内容:

{
ok: 1
}

Important

The response field ok: 1 indicates that the command was successful. However, there may be a delay between when you receive the response and when the updated index is ready and replaces the original index.响应字段ok: 1表示命令成功。但是,从您收到响应到更新的索引准备就绪并替换原始索引之间可能会有延迟。

To see the status of your search indexes, use the $listSearchIndexes aggregation stage.要查看搜索索引的状态,请使用$listSearchIndexes聚合阶段。

Example示例

The following example updates a search index named searchIndex01 on the contacts collection:以下示例更新contacts集合上名为searchIndex01的搜索索引:

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