对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs 菜单

updateSearchIndex(数据库命令)

updateSearchIndex

7.0 版本中的新增功能:(从 6.0.7 开始也可用)

更新现有 Atlas Search 索引。

mongosh方法db.collection.updateSearchIndex()提供了updateSearchIndex数据库命令的包装器。

重要

此命令只能在MongoDB Atlas托管的部署上运行,并且需要至少 M 10的 Atlas 集群层。

命令语法:

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

updateSearchIndex 命令接受以下字段:

字段
类型
必要性
说明

updateSearchIndex

字符串

必需

包含要更新的索引的collection名称。

id

字符串

可选的

id 要更新的索引的名称。

您必须指定id或name字段。

name

字符串

可选的

要更新的索引的名称。

您必须指定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

字符串

Optional

指定在建立索引时应用于string 字段的 分析器 。

如果省略此字段,索引将使用标准分析器。

searchAnalyzer

字符串

Optional

指定在搜索文本之前应用于查询文本的分析器。

如果省略此字段,索引将使用analyzer字段中指定的相同分析器。

如果同时省略searchAnalyzer和analyzer字段,索引将使用标准分析器。

mappings

对象

必需

指定如何在该索引的不同路径上为字段建立索引。

mappings.dynamic

布尔

Optional

为此索引启用或禁用动态字段映射。

如果设置为true ,则索引包含所有包含受支持数据类型的字段。

如果设置为 false,您必须使用 mappings.fields 指定要进行索引的各个字段。

如果省略,则默认值为 false。

mappings.fields

文档

可选的

仅在禁用了动态映射时才是必需的。

指定要索引的字段。要学习;了解更多信息,请参阅为MongoDB搜索索引定义字段映射。

analyzers

阵列

Optional

指定要在此索引中使用的自定义分析器。

storedSource

布尔值或存储的源定义

Optional

为使用returnedStoredSource选项执行的查询指定要存储的文档字段。

您可以在Atlas Search上存储所有MongoDB搜索字段类型的字段。storedSource 值可以是以下值之一:

  • true— 存储所有字段

  • false— 不存储任何字段

  • 一个对象,用于将存储中的字段指定为include或exclude

如果省略,则默认值为 false。

要学习;了解更多信息,请参阅在MongoDB搜索索引中定义存储源字段。

synonyms

Optional

指定要在索引中使用的同义词映射。 通过配置同义词,您可以索引和搜索具有相同或相似含义的单词。

要学习;了解更多信息,请参阅在MongoDB搜索索引中定义同义词映射。

updateSearchIndex命令使用新的索引定义Atlas Triggers索引构建。收到命令响应与更新后的索引准备就绪之间可能存在延迟。

在构建新索引时,旧索引定义仍可支持查询。 一旦新索引完成构建,旧索引就不再可用。 要查看搜索索引的状态,请使用$listSearchIndexes聚合阶段。

如果您的部署强制执行访问控制,则运行updateSearchIndex命令的用户必须对数据库或collection具有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聚合阶段。

以下示例更新collection上名为searchIndex01 contacts的搜索索引:

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