对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

db. 集合.createSearchIndex()(mongosh方法)

db.collection.createSearchIndex()

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

在指定的MongoDB Search集合或视图上创建MongoDB Vector Search索引。

重要

mongosh 方法

This page documents a mongosh method. This is not the documentation for database commands or language-specific drivers, such as Node.js.

有关数据库命令,请参阅 createSearchIndexes 命令。

如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。

此方法可用于以下环境中托管的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

命令语法:

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

createSearchIndex() 采用这些字段:

字段
类型
必要性
说明

name

字符串

Optional

要创建的搜索索引的名称。

不能在单个collection上创建多个同名索引。

如果未指定name ,则索引将命名为default

type

字符串

Optional

要创建的搜索索引的类型。 您可以指定以下任一项:

  • search

  • vectorSearch

如果省略type字段,则索引类型为search

definition

文档

必需

描述要创建的索引的文档。 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

Specifies the analyzer to apply to string fields when indexing.

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

searchAnalyzer

字符串

Optional

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

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

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

mappings

对象

必需

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

mappings.dynamic

布尔

Optional

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

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

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

如果省略,则默认值为 false

mappings.fields

文档

可选的

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

Specifies the fields to index. To learn more, see Define Field Mappings for a MongoDB Search Index.

analyzers

阵列

Optional

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

storedSource

布尔值或存储的源定义

Optional

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

You can store fields of all MongoDB Search Field Types on MongoDB Search. The storedSource value can be one of these:

  • true— 存储所有字段

  • false— 不存储任何字段

  • An object that specifies the fields to include or exclude from storage

如果省略,则默认值为 false

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

synonyms

Optional

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

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

向量搜索索引定义包含以下字段:

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

有关向量搜索索引定义字段的说明,请参阅如何为向量搜索的字段创建索引。

createSearchIndex() Atlas Triggers索引构建。收到命令响应与索引准备就绪之间可能存在延迟。

要查看搜索索引的状态,请使用$listSearchIndexes聚合阶段。

如果您的部署强制执行访问控制,则运行 createSearchIndex() 的用户必须在数据库或集合上执行 createSearchIndexes 权限操作:

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

内置readWrite角色提供createSearchIndexes权限。以下示例向accountUser01 readWrite授予products 数据库上的 角色:

db.grantRolesToUser(
"accountUser01",
[ { role: "readWrite", db: "products" } ]
)

searchIndex01movies以下示例在collection上创建了一个名为 的搜索索引:

db.movies.createSearchIndex(
"searchIndex01",
{ mappings: { dynamic: true } }
)

索引定义指定mappings: { dynamic: true } ,这意味着该索引包含集合中具有受支持数据类型的所有字段。

语言分析器引入了停用词,这些词的重要性不足以进行索引。

frenchIndex01cars以下示例在collection集合上创建名为 的搜索索引,并在 字段上指定lucene.french fr分析器:

db.cars.createSearchIndex(
"frenchIndex01",
{
mappings: {
fields: {
subject: {
fields: {
fr: {
analyzer: "lucene.french",
type: "string"
}
},
type: "document"
}
}
}
}
)

要了解有关语言分析器的更多信息,请参阅语言分析器。

以下createSearchIndex()方法仅指定索引定义并省略索引名称。 此命令会在collection上创建名称为default food的搜索索引:

db.food.createSearchIndex(
{
mappings: {
fields: {
title: {
type: "string"
}
}
}
}
)

以下示例在 movies 集合上创建一个名为 vectorSearchIndex01 的向量Atlas Search索引:

db.movies.createSearchIndex(
"vectorSearchIndex01",
"vectorSearch",
{
fields: [
{
type: "vector",
numDimensions: 1,
path: "genre",
similarity: "cosine"
}
]
}
)

向量Atlas Search索引包含一个维度并对 genre 字段编制索引。