第 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(集群)。
会显示集群页面。
转到集群的 Atlas Search 页面。
您可以从侧边栏、 Data Explorer 或集群详细信息页面转到 Atlas Search 页面。
在侧边栏中,单击 Services 标题下的 Atlas Search。
从 Select data source 下拉菜单中选择您的集群并单击 Go to Atlas Search。
将显示 Atlas Search 页面。
单击集群的对应 Browse Collections 按钮。
展开数据库并选择集合。
单击该集合的 Search Indexes 标签页。
将显示 Atlas Search 页面。
单击集群的名称。
单击 Atlas Search 标签页。
将显示 Atlas Search 页面。
输入 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 索引文件的路径,包括 .json 文件扩展名。 |
PROFILE_NAME | 字符串 | 可选。为项目设置公钥和私钥的配置文件名称。有关更多信息,请参阅保存连接设置。如果删除 --profile 标志,Atlas CLI 将使用默认配置文件。 |
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 查询。