db.collection.updateSearchIndex()
定义
7.0 版本中的新增功能:(也可从 6.0.7 开始使用)
更新现有的 Atlas Search 索引。
重要
mongosh 方法
本页面提供 mongosh
方法的相关信息。这不是数据库命令或特定语言驱动程序(例如 Node.js)的相关文档。
有关数据库命令,请参阅 updateSearchIndex
命令。
如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。
兼容性
此方法可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
重要
M 0 、M 2和 M 5集群或无服务器实例不支持此命令。 有关更多信息,请参阅不支持的命令。
语法
命令语法:
db.<collection>.updateSearchIndex( <name>, { <definition> } )
命令字段
updateSearchIndex()
采用这些字段:
字段 | 类型 | 必要性 | 说明 |
---|---|---|---|
name | 字符串 | 必需 | 要更新的搜索索引的名称。 |
definition | 文档 | 必需 | 描述更新后的索引定义的文档。 有关 definition 语法的详细信息,请参阅Atlas Search索引定义语法。 |
搜索索引定义语法
搜索索引定义包含以下字段:
{ 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 | 如果省略此字段,索引将使用标准分析器。 |
searchAnalyzer | 字符串 | Optional | |
mappings | 对象 | 必需 | 指定如何在该索引的不同路径上为字段建立索引。 |
mappings.dynamic | 布尔 | Optional | 为此索引启用或禁用动态字段映射。 如果设置为 如果设置为 如果省略,则默认值为 |
mappings.fields | 文档 | 可选的 | 仅在禁用了动态映射时才是必需的。 指定要索引的字段。 要了解更多信息,请参阅定义字段映射。 |
analyzers | 阵列 | Optional | 指定要在此索引中使用的自定义分析器。 |
storedSource | 布尔值或存储的源定义 | Optional | 为使用returnedStoredSource选项执行的查询指定要存储的文档字段。 您可以在 Atlas Search 上存储所有数据类型的字段。
如果省略,则默认值为 要了解更多信息,请参阅在 Atlas Search 索引中定义存储的源字段。 |
synonyms | 同义词映射定义数组 | Optional | 指定要在索引中使用的同义词映射。 通过配置同义词,您可以索引和搜索具有相同或相似含义的单词。 要了解更多信息,请参阅在 Atlas Search 索引中定义同义词映射。 |
行为
updateSearchIndex()
Atlas Triggers使用新索引定义的索引构建。收到命令响应与更新后的索引准备就绪之间可能存在延迟。
在构建新索引时,旧索引定义仍可支持查询。 一旦新索引完成构建,旧索引就不再可用。 要查看搜索索引的状态,请使用$listSearchIndexes
聚合阶段。
访问控制
如果您的部署强制执行访问控制,则运行 updateSearchIndex()
的用户必须在数据库或集合上执行 updateSearchIndex
权限操作:
{ resource: { db : <database>, collection: <collection> }, actions: [ "updateSearchIndex" ] }
内置的readWrite
和restore
角色提供updateSearchIndex
权限。以下示例授予对qa
数据库的readWrite
角色:
db.grantRolesToUser( "<user>", [ { role: "readWrite", db: "qa" } ] )
例子
以下示例创建了一个新的 Atlas Search 索引,然后更新了该索引。
在
movies
collection上创建名为searchIndex01
的搜索索引:db.movies.createSearchIndex( "searchIndex01", { mappings: { dynamic: true }, storedSource: { exclude: [ "imdb.rating" ] } } ) 更新
searchIndex01
索引:db.movies.updateSearchIndex( "searchIndex01", { mappings: { dynamic: true }, storedSource: { exclude: [ "movies" ] } } )