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:接受这些字段:
name | |||
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>"
} ]
}
analyzer |
| ||
searchAnalyzer |
| ||
mappings | object | ||
mappings.dynamic |
| ||
mappings.fields |
| ||
analyzers | |||
storedSource | boolean or Stored Source Definition |
| |
synonyms |
|
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:readWrite和restore角色提供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搜索索引,然后更新该索引。
Create a search index named在searchIndex01on themoviescollection:movies集合上创建一个名为searchIndex01的搜索索引:db.movies.createSearchIndex(
"searchIndex01",
{
mappings: { dynamic: true },
storedSource: {
exclude: [ "imdb.rating" ]
}
}
)Update the更新searchIndex01index:searchIndex01索引:db.movies.updateSearchIndex(
"searchIndex01",
{
mappings: { dynamic: true },
storedSource: {
exclude: [ "movies" ]
}
}
)