对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

MongoDB Search 架构

MongoDB Search 通过在 MongoDB 数据库部署 (mongod) 旁边部署 mongot 进程,在 Kubernetes 环境中实现全文搜索功能。mongot 进程管理搜索索引,从数据库中获取数据,并处理 $search$searchMeta 查询。这样就无需维护单独的搜索系统,同时还提供了高级搜索功能。

要部署 MongoDB Search,您需要应用 MongoDBSearch 自定义资源 (CR),Kubernetes 操作符会获取该资源并使用它来部署 mongot pod 并请求 spec 中指定的持久化存储。

有关部署程序,请参阅部署 MongoDB Search 和向量搜索。

每个 mongot进程都有自己的持久卷,不与数据库或其他搜索节点共享。存储用于维护根据持续源自数据库的数据构建的索引。索引定义(元数据)存储在数据库中。

mongot 执行以下操作:

  • 管理索引。

    mongot 负责更新数据库中的索引定义。

  • 从数据库中获取数据。

    mongot 节点与数据库建立永久连接,以便实时更新数据库中的索引。

  • 处理搜索查询。

    mongod 收到 $search$searchMeta 查询时,它会将查询导向 mongot 节点之一。接收查询的 mongot 会处理查询、聚合数据,并将结果返回给 mongod,后者再将结果转发给用户。

mongot 组件与单个 MongoDB 副本集紧密耦合,不能在多个数据库或副本集之间共享。每个副本集部署都有其自己的专用搜索节点。要进一步了解 Search 节点架构,请参阅 MongoDB Search 文档中的节点架构

mongotmongod 之间的网络连接是双向的:

  • mongot 建立与副本集的连接,以获取用于构建索引和运行查询的数据。

  • mongod 连接到 mongot 以转发索引管理和查询数据等搜索相关操作。

mongod 充当所有搜索查询的代理。您从不会直接与 mongot 交互。

mongotmongod 进程同时部署在Kubernetes集群内时,Kubernetes 操作符 会自动为这两个进程执行配置。具体来说,Kubernetes Operator:

  1. 使用 或通过命名规范查找与 MongoDBSearch 同名的 MongoDB CRspec.source.mongodbResourceRef ,查找 MongoDBSearch 引用的 MongoDB CR 。

  2. YAML 文件中生成 mongot 配置,并将其保存到名为 <MongoDBSearch.metadata.name>-search-config 的配置映射中。

  3. 部署名为 <MongoDBSearch.metadata.name>-search 的 MongoDB Search 有状态集,并根据 CR 中的 spec.persistencespec.resourceRequirements 配置存储和资源要求。

  4. 通过添加必要的 setParameter 选项(包括 mongot 主机的主机名和端口号)来更新每个 mongod 进程的配置。

当 MongoDB 副本集在 Kubernetes 外时,您使用 Kubernetes 操作符部署 mongot,并手动执行一些步骤。Kubernetes 操作符处理搜索节点的配置,但您必须重新配置 MongoDB 节点和网络。

如果 MongoDB 服务器位于 Kubernetes 集群内,Kubernetes 操作符会自动为 MongoDB Search 设置密钥文件身份验证。如果 MongoDB 服务器是外部的,则必须创建一个包含副本集密钥文件凭证的 Kubernetes Secret,并在 MongoDBSearch CR 中引用它。

您无法在以下架构上部署 MongoDB Search:

  • IBM Power (ppc64le)

  • IBM Z (s390x)

提示