Docs 菜单
Docs 主页
/ / /
Rust 驱动程序
/ /

Atlas Search 索引

在此页面上

  • Overview
  • 创建搜索索引模型
  • 例子
  • 创建搜索索引
  • 例子
  • 创建多个搜索索引
  • 例子
  • 搜索索引列表
  • 例子
  • 更新搜索索引
  • 例子
  • 删除搜索索引
  • 例子
  • 更多信息
  • API 文档

在本指南中,您可以了解如何创建和管理Atlas Search 索引。 这些索引允许您使用 MongoDB 的 Atlas Search 功能对 Atlas 集群中存储的数据执行快速全文搜索。 Atlas Search 索引通过指定要索引的字段、索引这些字段的方式以及其他可选设置来配置 Atlas Search 的行为。 要了解有关 Atlas Search 索引的更多信息,请参阅 Atlas Search 文档。

本指南介绍了如何执行以下操作来托管您的 Atlas Search 索引:

注意

本指南中的示例访问sample_training数据库中的 posts集合,该数据库是 Atlas 示例数据集之一。 有关导入 Atlas 样本数据的说明,请参阅 Atlas 文档中的加载样本数据

要创建 Atlas Search 索引,您必须首先构建一个用于设置索引规范的SearchIndexModel实例。 要开始构建SearchIndexModel实例,请调用SearchIndexModel::builder()方法。

注意

实例化模型

Rust驾驶员实现了用于创建某些结构体类型(包括SearchIndexModel的 Builder 设计模式。 您可以使用builder()方法通过链接选项构建器方法来构造每种类型的实例。

Rust 驱动程序提供以下SearchIndexModel构建器方法:

  • definition(),它接受 BSON 文档参数并设置索引定义

  • name(),它接受一个字符串参数并设置索引名称

您传递给definition()构建器方法的 BSON 文档必须包含mappings字段。要自动索引集合中所有支持的字段,请将mappings.dynamic嵌套字段设置为true来启用动态映射。 要仅索引指定字段,请将mappings.dynamic嵌套字段设置为false并包含要索引的字段列表以启用静态映射。

提示

Atlas Search 字段映射

要了解有关 Atlas Search 字段映射的更多信息,请参阅 Atlas 文档中的定义字段映射

以下示例为SearchIndexModel实例中名为example_index的索引创建规范。 该代码设置静态映射以仅索引bodydate字段:

let def = doc! { "mappings": doc! {
"dynamic": false,
"fields": {
"body": {"type": "string"},
"date": {"type": "date"}
}
}};
let idx_model = SearchIndexModel::builder()
.definition(def)
.name("example_index".to_string())
.build();

您可以通过在 Collection 实例上调用 create_search_index() 方法,在集合上创建 Atlas Search 索引。本方法接受一个以 SearchIndexModel 实例指定的索引模型作为参数。

以下示例在posts collection 上创建 Atlas Search 搜索索引。该代码创建一个SearchIndexModel ,用于设置索引名称并启用动态映射。 然后,代码将SearchIndexModel实例传递给create_search_index()方法以创建 Atlas Search 索引:

let idx_model = SearchIndexModel::builder()
.definition(doc! { "mappings": doc! {"dynamic": true} })
.name("example_index".to_string())
.build();
let result = my_coll.create_search_index(idx_model).await?;
println!("Created Atlas Search index:\n{}", result);
Created Atlas Search index:
"example_index"

您可以通过在 Collection 实例上调用 create_search_indexes() 方法一次创建多个 Atlas Search 索引。此方法接受索引模型列表作为参数,指定为 SearchIndexModel 实例的向量。

以下示例在collection上创建了两个名为dynamic_index static_indexposts 的 Atlas Search 搜索索引。该代码为每个索引创建SearchIndexModel实例,以指定索引名称和定义。 然后,代码将这些模型作为向量传递给create_search_indexes()方法并创建索引:

let dyn_idx = SearchIndexModel::builder()
.definition(doc! { "mappings": doc! {"dynamic": true} })
.name("dynamic_index".to_string())
.build();
let static_idx = SearchIndexModel::builder()
.definition(doc! {"mappings": doc! { "dynamic": false, "fields": {
"title": {"type": "string"}}}})
.name("static_index".to_string())
.build();
let models = vec![dyn_idx, static_idx];
let result = my_coll.create_search_indexes(models).await?;
println!("Created Atlas Search indexes:\n{:?}", result);
Created Atlas Search indexes:
["dynamic_index", "static_index"]

您可以通过调用集合上的 list_search_indexes() 方法来访问有关该集合的现有 Atlas Search 索引的信息。

以下示例访问有关在本页的创建多个搜索索引部分中创建的 Atlas Search 索引的信息。该代码调用 list_search_indexes() 方法并输出集合上的所有 Atlas Search 索引:

let mut cursor = my_coll.list_search_indexes().await?;
while let Some(index) = cursor.try_next().await? {
println!("{}\n", index);
}
{ "id": "...", "name": "dynamic_index", "status": "READY", "queryable": true, "latestDefinitionVersion": {...},
"latestDefinition": { "mappings": { "dynamic": true } }, "statusDetail": [...] }
{ "id": "...", "name": "static_index", "status": "READY", "queryable": true, "latestDefinitionVersion": {...},
"latestDefinition": { "mappings": { "dynamic": false, "fields": { "title": { "type": "string" } } } },
"statusDetail": [...] }

提示

要了解有关迭代游标的更多信息,请参阅 Access Data by Using a Cursor(使用游标访问数据)指南。

您可以通过在实例上调用方法来更新 Atlas Searchupdate_search_index() Collection索引。此方法接受以下参数:

  • 要更新的索引名称

  • 修改索引定义文档

下面的示例更新了在本页 创建多个搜索索引部分创建的名为 static_index 的 Atlas Search 索引。该代码创建一个新的索引定义文档,指示索引使用动态映射而不是静态映射。然后,代码调用 update_search_index() 方法来更新索引:

let name = "static_index";
let definition = doc! { "mappings": doc! {"dynamic": true} };
my_coll.update_search_index(name, definition).await?;

您可以通过在 Collection 实例上调用 delete_search_index() 方法来删除 Atlas Search 索引。此方法接受将要删除的索引的名称作为参数。

以下示例删除了在本页面的“创建Atlas Search Atlas Search索引”部分中创建的名为 example_index 的 Atlas Search 索引。 代码将索引名称传递给delete_search_index()方法以删除索引:

let name = "example_index";
my_coll.drop_search_index(name).await?;

要了解可以使用 Rust 驱动程序创建的其他索引,请参阅索引指南。

要了解有关 Atlas Search 的更多信息,请参阅以下 Atlas 文档:

要进一步了解本指南所提及的方法和类型,请参阅以下 API 文档:

后退

索引