Atlas Search 错误故障排除
正在进行初始同步
Atlas Search 在以下情况下启动初始同步进程:
当您创建新集群或对集群执行某些升级时,会发生初始同步过程。
如果将分片添加到具有现有 Atlas Search 索引的集合,则为该索引添加的分片会发生初始同步。
如果您对已经具有 Atlas Search 索引的集合进行分片,则在该集合开始存在的分片上会发生初始同步。
初始同步过程包括以下步骤:
mongod
执行初始同步。mongot
执行初始同步,从而重建搜索索引。
重建搜索索引时,您仍可对现有索引字段执行$search
查询。 但是,如果您对新字段或最近创建的节点运行$search
查询,Atlas Search 可能会返回错误。 初始同步完成并mongot
重建索引后重试查询。 您可以通过以下步骤检查mongot
初始同步的状态:
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 页面。
mongot
未安装或未运行的进程
如果在 Atlas Search mongot
进程未安装或运行时运行$search
查询,则会返回以下错误:
MongoError: Remote error from mongot :: caused by :: Error connecting to localhost:28000.
仅当定义第一个 Atlas Search 索引时才会安装mongot
进程。如果您的 Atlas 集群中没有任何 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 字段类型(例如stringFacet
或autocomplete
,则 Atlas Search 不会返回错误并返回空结果集。 您必须使用string
BSON数据类型值作为字符串类型对字段进行索引,才能使用文本操作符查询字段。
PlanExecutor
错误
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. 例如,要对
string
、number
或date
字段运行分面(Facet)查询,请分别使用相应的 Atlas Search 字段类型(例如stringFacet
、numberFacet
和dateFacet
为字段创建索引。要了解详情,请参阅支持和不支持的数据类型。
Failed to Execute search Command
错误
如果您部署mongot
与mongod
一起运行(即没有配置搜索节点以实现工作负载隔离),则在mongot
进程终止时, mongot
可能会返回此错误,例如在以下任一事件期间:
集群高档
节点故障转移
mongot
升级
如果在专用搜索节点上部署mongot
,则mongod
会使用识别每个搜索节点的代理,因此mongod
只会将搜索查询路由到mongot
处于活动状态的正常节点。