Docs 菜单
Docs 主页
/
MongoDB Atlas
/ /

Atlas Search 错误故障排除

在此页面上

  • 正在进行初始同步
  • mongot 未安装或未运行的进程
  • 空结果集
  • PlanExecutor 错误
  • Failed to Execute search Command 错误

Atlas Search 在以下情况下启动初始同步进程:

  • 当您创建新集群或对集群执行某些升级时,会发生初始同步过程。

  • 如果将分片添加到具有现有 Atlas Search 索引的集合,则为该索引添加的分片会发生初始同步。

  • 如果您对已经具有 Atlas Search 索引的集合进行分片,则在该集合开始存在的分片上会发生初始同步。

初始同步过程包括以下步骤:

  1. mongod执行初始同步。

  2. mongot执行初始同步,从而重建搜索索引。

重建搜索索引时,您仍可对现有索引字段执行$search查询。 但是,如果您对新字段或最近创建的节点运行$search查询,Atlas Search 可能会返回错误。 初始同步完成并mongot重建索引后重试查询。 您可以通过以下步骤检查mongot初始同步的状态:

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 如果尚未出现,请单击侧边栏中的 Clusters(集群)。

    显示 集群页面。

2

您可以从侧边栏、 Data Explorer 或集群详细信息页面转到 Atlas Search 页面。

  1. 在侧边栏中,单击 Services 标题下的 Atlas Search

  2. Select data source 下拉菜单中选择您的集群并单击 Go to Atlas Search

    将显示 Atlas Search 页面。

  1. 单击集群的对应 Browse Collections 按钮。

  2. 展开数据库并选择集合。

  3. 单击该集合的 Search Indexes 标签页。

    将显示 Atlas Search 页面。

  1. 单击集群的名称。

  2. 单击 Atlas Search 标签页。

    将显示 Atlas Search 页面。

3
  1. 在索引的Status列中,单击View Status Details

  2. 检查节点索引的状态。 在mongot初始同步期间,状态为INITIAL SYNC 。 当mongot完成重建索引后,状态为ACTIVE

如果在 Atlas Search mongot进程未安装或运行时运行$search查询,则会返回以下错误:

MongoError: Remote error from mongot :: caused by :: Error connecting to localhost:28000.

仅当定义第一个 Atlas Search 索引时才会安装mongot进程。如果您的 Atlas 集群中没有任何 Atlas Search 索引,请至少创建一个 Atlas Search 索引来解决此错误。

提示

另请参阅:

  • 查看 Atlas Search 搜索索引语法

  • 创建 Atlas Search 索引

mongot 不返回任何错误,但在以下情况下返回空结果集: $search查询:

  • 引用了不存在的索引。 如果您不在查询中按名称指定索引,Atlas Search 默认使用名为default的索引。如果您没有名为default的索引,或者您指定的索引不存在,则 Atlas Search 不会返回错误而是返回空结果集。 您可以使用index选项按名称指定有效索引。 要了解更多信息,请参阅 Atlas Search聚合管道阶段选项。

  • 指定非索引字段。 如果您对未编入索引的字段运行查询,Atlas Search 不会返回错误并返回空结果集。您必须仅指定索引字段作为path参数的值。 您可以在集合的索引定义中启用动态映射,以确保自动为集合中的所有可动态索引的字段编制索引。 要了解更多信息,请参阅动态映射。

  • 在未索引为string类型的字段路径(Field Path)上使用text操作符。如果字段被索引为string以外的 Atlas Search 字段类型(例如stringFacetautocomplete ,则 Atlas Search 不会返回错误并返回空结果集。 您必须使用string BSON数据类型值作为字符串类型对字段进行索引,才能使用文本操作符查询字段。

mongot 如果$search查询出现以下情况,则会返回PlanExecutor错误:

  • 指定作为不正确数据类型进行索引的字段。在这种情况下,如果您运行查询,Atlas Search 会返回一条错误消息,标识索引不正确的字段及其正确的数据类型。例如:

    PlanExecutor error during aggregation :: caused by :: Cannot facet on field "genres" because
    it was not indexed as a "stringFacet" field.

    例如,要对stringnumberdate字段运行分面(Facet)查询,请分别使用相应的 Atlas Search 字段类型(例如stringFacetnumberFacetdateFacet为字段创建索引。要了解详情,请参阅支持和不支持的数据类型。

如果您部署mongotmongod一起运行(即没有配置搜索节点以实现工作负载隔离),则在mongot进程终止时, mongot可能会返回此错误,例如在以下任一事件期间:

  • 集群高档

  • 节点故障转移

  • mongot 升级

如果在专用搜索节点上部署mongot ,则mongod会使用识别每个搜索节点的代理,因此mongod只会将搜索查询路由到mongot处于活动状态的正常节点。

后退

解释时序