Docs 菜单
Docs 主页
/
MongoDB Atlas
/

创建和运行 Atlas Search 查询

在此页面上

  • 支持的客户端
  • 后续步骤

Atlas Search 查询采用 聚合管道阶段的形式。Atlas Search 提供 $search$searchMeta 阶段,二者都必须是任何查询管道的第一阶段,包括 $lookup$unionWith 子管道。这些阶段可与查询管道中的其他聚合管道阶段结合使用。要了解有关这些管道阶段的更多信息,请参阅选择聚合管道阶段。

Atlas Search 还提供查询操作符收集器,而您可在 $search$searchMeta 聚合管道阶段中使用它们。Atlas Search 操作符允许您从 Atlas 集群上的集合中查找和检索相关数据。收集器会返回代表搜索元数据结果的文档。

您可以使用 Atlas Search 操作符来查询词、短语、地理形状和点、数值、类似文档、同义词等。您还可使用正则表达式和通配符表达式进行搜索。Atlas Search 复合操作符允许您在 $search 阶段组合使用多个操作符,以便根据 Atlas Search 返回的文档中必须不得、或应该出现的内容执行复杂的数据搜索与筛选操作。您也可使用复合操作符在 $search 阶段匹配或筛选文档。在 $search 之后运行 $match 的性能低于使用复合操作符运行 $search 的性能。

要了解有关 Atlas Search 操作符的事务语法、选项和用法的详情,请参阅在 Atlas Search 查询中使用操作符和收集器

mongodmongot 在同一节点上

当您运行查询时,Atlas Search 会使用配置的读取偏好来确定运行查询的节点。该查询首先进入 MongoDB 进程,对于副本集集群为 mongod,对于分片集群为 mongos

对于副本集集群,MongoDB 进程将查询路由到同一节点上的 mongot 。对于分片集群,您的集群数据跨 mongod 实例进行分区,并且每个 mongot 仅了解同一节点上的 mongod 数据。因此,您无法运行针对特定分片的 Atlas Search 查询。mongos 将查询定向到所有分片,使这些查询成为分散聚集查询。如果您使用区域将分片集合分布到集群中的一部分分片上,则 Atlas Search 将查询路由到包含所查询的集合分片的区域,并仅对该集合所在的分片运行 $search 查询。

Atlas Search 会执行搜索和评分,并将匹配结果的文档 ID 和其他搜索元数据返回 mongod。然后,mongod 将对匹配结果隐式执行完整文档查找,并将结果返回客户端。如果在查询中使用 $search 并发选项,则 Atlas Search 将启用查询内并行机制。要了解更多信息,请参阅并行查询各分段。

mongodmongot 在不同节点上

运行查询时,查询会首先根据配置的读取偏好进入 mongodmongod 进程通过同一节点上的负载均衡器路由搜索查询,以便将请求分发到所有 mongot 进程。

Atlas Search mongot 进程执行搜索和评分,并将匹配结果的文档 ID 和元数据返回到 mongod。然后,mongod 对匹配结果执行完整文档查找,并将结果返回客户端。如果在查询中使用 $search 并发选项,则 Atlas Search 将启用查询内并行机制。要了解更多信息,请参阅并行查询各分段。

Atlas Search 会将基于相关性的分数与结果集中的每个文档相关联。基于相关性的评分允许 Atlas Search 按从最高分到最低分的顺序返回文档。如果查询词频繁出现在某一文档中,Atlas Search 则会将此文档评为较高分;如果该查询词出现在集合内的很多文档中,则其评分较低。Atlas Search 还支持通过提升、衰减或其他修改选项来自定义基于相关性的默认分数。要了解有关自定义所生成分数的更多信息,请参阅对结果中的文档进行评分

提示

另请参见:通过观看了解

观看此视频,了解使用 Atlas Search 搜索和跟踪查询的概述。在本视频中,您可以详细了解 Atlas Search 操作符以及 Atlas Search 如何对结果中的文档进行评分

时长:15 分钟

您可以使用以下命令创建并运行 Atlas Search 查询:

要了解如何创建和运行查询,请参阅创建查询。要亲身体验创建 Atlas Search 索引和对示例数据集运行 Atlas Search 查询,请尝试以下页面中的教程:

后退

Update