第 1 步:创建 Atlas Search 索引
Atlas Search 索引是一种数据结构,它会以易于搜索的格式对数据进行分类。它是术语与包含这些术语的文档之间的映射。Atlas Search 索引可以使用某些标识符更快地检索文档。您必须配置 Atlas Search 索引才能使用 Atlas Search 查询 Atlas 集群中的数据。
您可在单个字段或多个字段上创建 Atlas Search 索引。我们建议您对经常用于排序或筛选数据的字段建立索引,以便在查询时快速检索包含相关数据的文档。
您可以使用 Atlas 用户界面、Atlas Search API、Atlas CLI、MongoDB Compass 或 支持的 MongoDB 驱动程序以您偏好的语言创建 Atlas Search 索引。
本教程使用样本数据集中的 sample_mflix.movies
集合。
Atlas UI
AtlasGoClusters在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果尚未出现,请单击侧边栏中的 Clusters(集群)。
会显示集群页面。
输入 Index Name(索引名称),然后设置 Database and Collection(数据库和集合)。
在 Index Name 字段中输入
default
。如果将索引命名为
default
,则在使用 $search 管道阶段时无需指定index
参数。如果您为索引指定了自定义名称,则必须在index
参数中指定此名称。在 Database and Collection(数据库和集合)部分中找到
sample_mflix
数据库,然后选择movies
集合。
指定索引定义。
您可以创建使用动态映射或静态映射的 Atlas Search 索引。要了解有关动态和静态映射的更多信息,请参阅静态和动态映射。
以下索引定义对 movies
集合中的支持类型字段动态创建索引。您可以使用 Atlas Search Visual Editor 或 Atlas Search JSON Editor 在 Atlas 用户界面中创建索引。
可视化编辑器
单击 Next(连接)。
查看
movies
集合的"default"
索引定义。
JSON 编辑器
单击 Next(连接)。
查看索引定义。
索引定义应类似于以下内容:
{ "mappings": { "dynamic": true } } 上述索引定义对
movies
集合中每个文档中的支持类型字段动态创建索引。单击 Next(连接)。
Atlas Search API
复制示例 cURL 请求,并粘贴到您的首选文本编辑器中。
以下索引定义动态索引 movies
集合中支持类型的字段。
1 PUBLIC_KEY=MY_PUBLIC_KEY # replace replace with your public key 2 PRIVATE_KEY=MY_PRIVATE_KEY # replace with your private key 3 GROUP_ID=YOUR_GROUP_ID # replace with your project ID 4 CLUSTER_NAME=YOUR_CLUSTER_NAME # replace with your cluster's name 5 6 curl --user "$PUBLIC_KEY:$PRIVATE_KEY" --digest \ 7 --header "Content-Type: application/json" \ 8 --include \ 9 --request POST "https://cloud.mongodb.com/api/atlas/v2/groups/$GROUP_ID/clusters/$CLUSTER_NAME/search/indexes?pretty=true" \ 10 --data '{ 11 "collectionName": "movies", 12 "database": "sample_mflix", 13 "definition":{ 14 "mappings": { 15 "dynamic": true 16 } 17 }, 18 "name": "default" 19 }'
替换 cURL 请求示例中的变量。
示例 cURL 请求使用这些变量。运行 cURL 命令以创建 Atlas Search 索引之前,将这些变量替换为所需的值。
名称 | 类型 | 说明 |
---|---|---|
PUBLIC_KEY | 字符串 | 用于 API 凭证的公共 API 密钥。 |
PRIVATE_KEY | 字符串 | 您的 API 凭证的私有 API 密钥。 |
GROUP_ID | 字符串 | 唯一的 24 位十六进制字符串,标识包含集群的项目,该集群包含您想要为其创建 Atlas Search 索引的集合。 |
CLUSTER_NAME | 字符串 | 标识集群的人类可读标签,该集群包含您要为其创建 Atlas Search 索引的集合。 使用 API 获取 CLUSTER_NAME。对于每个集群,Atlas 在 name 字段中返回 CLUSTER_NAME。 |
Atlas CLI
注意
您还可以将 Atlas Search 与通过 Atlas CLI 创建的本地 Atlas 部署结合使用。要了解详情,请参阅创建本地 Atlas 部署。
创建 JSON 索引定义并将其保存在文件中。
复制以下示例索引定义,然后将 JSON 索引示例粘贴到新文件中,并保存该文件:
以下索引定义动态索引 movies
集合中支持类型的字段。
1 { 2 "name": "INDEX_NAME", 3 "clusterName": "CLUSTER_NAME", 4 "collectionName": "movies", 5 "database": "sample_mflix", 6 "mappings": { 7 "dynamic": true 8 } 9 }
复制并修改 Atlas CLI 请求示例。
将以下示例 Atlas CLI 请求粘贴到您常用的文本编辑器中并替换变量。
atlas clusters search index create \ --clusterName CLUSTER_NAME \ --file FILE_PATH \ --projectId PROJECT_ID --profile PROFILE_NAME
示例 Atlas CLI 请求使用这些变量。运行命令以创建 Atlas Search 索引之前,将这些变量替换为所需的值。
名称 | 类型 | 说明 |
---|---|---|
PROJECT_ID | 字符串 | 唯一的 24 位十六进制字符串,标识包含集群的项目。该集群包含您想要为其创建 Atlas Search 索引的集合。 |
CLUSTER_NAME | 字符串 | 标识集群的唯一 24 位十六进制字符串。该集群包含您想要为其创建 Atlas Search 索引的集合。 |
FILE_PATH | 字符串 | 您在前面步骤中创建并保存的 JSON 索引文件的路径,包括 |
PROFILE_NAME | 字符串 | 可选。为项目设置公钥和私钥的配置文件名称。有关更多信息,请参阅保存连接设置。如果删除 |
MongoDB Compass
您可以在运行 MongoDB 7.0 或更高版本的 M10
及更高版本的集群上通过 MongoDB Compass 创建 Atlas Search 索引。
在 MongoDB Compass 中连接到您的 Atlas 集群。
打开 Compass 并连接到 Atlas 集群。有关连接的详细说明,请参阅通过 Compass 连接。
以编程方式
您可以使用 mongosh
或采用您首选语言的受支持 MongoDB 驱动程序,以编程方式创建 Atlas Search 索引。
先决条件
要在任何集群层上以编程方式创建和管理AtlasAtlas Search MongoDBSearch索引,您可以使用以下任何MongoDB驱动程序:
MongoDB 驱动 | 版本 |
---|---|
1.25.0 或更高版本 | |
3.9.0 或更高版本 | |
2.21.0 或更高版本 | |
1.13.0 或更高 | |
4.11.0 或更高版本 | |
9.0 或更高 | |
3.3.0 或更高 | |
5.2.0 或更高 | |
5.6.0 或更高版本 | |
1.17.0 或更高版本 | |
4.5 或更高版本 | |
2.19.2 或更高版本 | |
2.8.0 或更高版本 | |
5.2.0 或更高 |
➤ 使用选择语言下拉菜单设置本节中示例的语言。
步骤
通过 mongosh
连接到您的集群。
在终端窗口中打开mongosh
并连接到集群。 有关连接的详细说明,请参阅通过mongosh
连接。
使用 sample_mflix
数据库。
在 mongosh
提示符下运行以下命令:
use sample_mflix
将查询复制并粘贴到 Program.cs
文件中。
using MongoDB.Bson; using MongoDB.Driver; // connect to your Atlas deployment var uri = "<connection-string>"; var client = new MongoClient(uri); var db = client.GetDatabase("sample_mflix"); var collection = db.GetCollection<BsonDocument>("movies"); // define your Atlas Search index var index = new CreateSearchIndexModel( "default", new BsonDocument { { "mappings", new BsonDocument { { "dynamic", true } } } }); var result = collection.SearchIndexes.CreateOne(index); Console.WriteLine(result);
替换查询中的 <connection-string>
,然后保存该文件。
确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。
将以下代码复制并粘贴到 create-index.js
文件。
const { MongoClient } = require("mongodb"); // connect to your Atlas deployment const uri = "<connection-string>"; const client = new MongoClient(uri); async function run() { try { // set namespace const database = client.db("sample_mflix"); const collection = database.collection("movies"); // define your Atlas Search index const index = { name: "default", definition: { /* search index definition fields */ "mappings": { "dynamic": true } } } // run the helper method const result = await collection.createSearchIndex(index); console.log(result); } finally { await client.close(); } } run().catch(console.dir);
替换查询中的 <connection-string>
,然后保存该文件。
确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。
后续步骤
现在已经创建了索引,请继续执行第 2 步:运行 Atlas Search 查询。