您可以在MongoDB Community Edition中安装搜索进程mongot。搜索进程可作为映像部署在Docker中。mongot进程支持使用您自己的嵌入或自动嵌入进行全文搜索和语义搜索。
使用 Docker 安装 MongoDB Search 和向量搜索
注意
要更快地使用用于实验的部署,请参阅 MongoDB Search 和 MongoDB Vector Search 本地开发快速入门。
开始之前
重要
mongot 同步 mongod 的数据,并需要 MongoDB 副本集。独立运行的 mongod 部署不支持 mongot。
在部署 mongot 之前,请完成以下步骤:
安装Docker和Docker Compose。
如果您希望MongoDB Vector Search 自动为集合中的文本数据生成嵌入,请创建终结点服务API密钥。要学习更多信息,请参阅自动嵌入。
重要
自动嵌入处于预览状态。在预览期间,功能和相应的文档可能随时更改。要学习;了解更多信息,请参阅预览功能。
If you don't already have the keys, create the endpoint service API keys from the Atlas UI. We recommend that you create two keys, one for generating embeddings at index-time and another for generating embeddings at query-time, from two Atlas projects.
注意
用于生成嵌入的提供商终结点取决于您是从Atlas用户界面创建API密钥,还是直接从 Voyage AI创建 API 密钥。
步骤
警告
此过程提供一个最小且不安全的默认配置,该配置不启用访问控制。这些步骤创建一个部署,仅用于本地实验。
在曝露这些容器并在生产环境中使用您的设置之前,请参阅以下资源以保护您的部署:
下载 MongoDB Docker 映像。
要下载MongoDB Docker映像,运行以下命令:
docker pull mongodb/mongodb-community-server:latest
注意
您必须至少拥有MongoDB 8.3+ 才能将MongoDB Search 与本地部署结合使用。有关更多信息,请参阅 MongoDB Search 兼容性。
有关使用Docker安装MongoDB的更多详细信息,请参阅使用Docker安装MongoDB Community。
Create a mongot sync-user password file.
为 mongot 创建密码文件,以连接到 mongod。选择操作系统并运行命令:
将 <mongot_password> 替换为您的密码,然后运行以下命令以在当前目录中创建名为 passwordFile 的文件:
echo -n "<mongot_password>" > passwordFile chmod 400 passwordFile
将 <mongot_password> 替换为您的密码,并运行以下命令以在名为 mongot-secrets 的 Docker 托管命名卷中创建名为 passwordFile 的文件。在后续步骤中启动 mongot 时,您参考的是此卷,而不是托管路径。
docker volume create mongot-secrets docker run --rm -v mongot-secrets:/secrets busybox sh -c "echo -n '<mongot_password>' > /secrets/passwordFile && chmod 400 /secrets/passwordFile"
在 Windows 上,绑定挂载的托管文件不会在 Linux 容器内保留 Unix 权限位。Docker Desktop 的文件共享层会覆盖您在 NTFS 侧设置的权限,而 Windows 没有原生的 chmod 等效项。前面命令中的临时容器在 Linux 侧正确设置了权限。
注意
-n 标志可防止出现尾随换行符。
创建mongod配置文件。
要创建配置文件,请将以下代码保存到 mongod.conf 或您的首选位置。
# MongoDB Configuration File # Network configuration net: port: 27017 bindIpAll: true # Equivalent to --bind_ip_all # Replica set configuration replication: replSetName: rs0 # Search configuration parameters setParameter: # Server parameters to advise mongod of mongot availability for search index management and querying searchIndexManagementHostAndPort: mongot-community.search-community:27028 mongotHost: mongot-community.search-community:27028 skipAuthenticationToSearchIndexManagementServer: false useGrpcForSearch: true searchTLSMode: disabled
Start your mongod.
要启动 mongod:
将
</path/to/data/db>替换为已挂载卷的本地目录路径。将
</path/to/mongod.conf>替换为上面创建的配置文件的路径。在 Windows 上,将每行末尾的反斜杠 (
\) 替换为 shell 的行继续字符。命令提示符使用关键字符 (^),PowerShell 使用反引号。
docker run --rm \ --name mongod \ -v </path/to/mongod.conf>:/etc/mongod.conf:ro \ -v </path/to/data/db>:/data/db \ -p 27017:27017 \ --network search-community \ mongodb/mongodb-community-server:latest \ --config /etc/mongod.conf \ --replSetMember=mongod.search-community:27017
Create a user for the mongot process on your MongoDB deployment.
mongot 必须能够通过具有searchCoordinator角色的用户连接到MongoDB 部署。
运行以下命令以连接到 admin数据库:
use admin
要创建具有 searchCoordinator角色的用户:
将
<mongot_username>替换为mongot用户的用户名。将
<mongot_password>替换为您在步骤 4 中的passwordFile中指定的密码。运行以下命令:
db.createUser( { user: "<mongot_username>", pwd: "<mongot_password>", roles: [ "searchCoordinator" ] } )
有关创建用户的更多信息,请参阅在自管理部署上创建用户。
指定搜索配置选项。
您可以使用 YAML 配置文件配置 mongot。您必须将在上一步中指定的用户名指定为 syncSource.replicaSet.scramAuth.username。您还必须将上一步中创建的 passwordFile 指定为 syncSource.replicaSet.scramAuth.passwordFile。
有关 mongot 配置选项的更多信息,请参阅 mongot 选项。
示例,您可以将设置调整为本地配置,如下所示:
# mongot.conf syncSource: replicaSet: hostAndPort: "mongod.search-community:27017" scramAuth: username: "mongotUser" passwordFile: "/passwordFile" authSource: "admin" tls: enabled: false replicationReader: readPreference: "secondaryPreferred" storage: dataPath: "/data/mongot" server: grpc: address: "mongot-community.search-community:27028" tls: mode: "disabled" metrics: enabled: true address: "mongot-community.search-community:9946" healthCheck: address: "mongot-community.search-community:8080" logging: verbosity: INFO
将文件保存到 mongot.config 或您的首选文件位置。
两个容器在同一 search-community Docker网络上运行。
启动mongot进程。
要在 Community 二进制文件 (mongot) 中启动搜索,请选择您的操作系统并运行命令:
将
</path/to/data/mongot>替换为已挂载卷的本地目录路径,用于存储mongot数据。将
</path/to/mongot.conf>替换为您在上一步中创建的mongot配置文件的路径。将
</path/to/passwordFile>替换为您创建的密码文件的路径。
docker run --rm \ --name mongot-community \ -v </path/to/data/mongot>:/data/mongot \ -v </path/to/mongot.conf>:/mongot-community/config.default.yml \ -v </path/to/passwordFile>:/passwordFile:ro \ --network search-community \ -p 8080:8080 \ -p 9946:9946 \ mongodb/mongodb-community-search:latest
将
</path/to/data/mongot>替换为已挂载卷的本地目录路径,用于存储mongot数据。将
</path/to/mongot.conf>替换为您在上一步中创建的mongot配置文件的路径。将
mongot配置文件中的syncSource.replicaSet.scramAuth.passwordFile设置为"/secrets/passwordFile"而不是"/passwordFile"。该命令将在步骤 4 中创建的mongot-secrets卷在容器中挂载到/secrets。在 PowerShell 中,将每个插入符号 (
^) 替换为反引号。该命令使用插入符号 (^) 行继续字符作为命令提示符。
docker run --rm ^ --name mongot-community ^ -v </path/to/data/mongot>:/data/mongot ^ -v </path/to/mongot.conf>:/mongot-community/config.default.yml ^ -v mongot-secrets:/secrets:ro ^ --network search-community ^ -p 8080:8080 ^ -p 9946:9946 ^ mongodb/mongodb-community-search:latest
此命令:
挂载卷。
从本地卷挂载配置文件。
指定端口范围。
公开指标端口。
使用名为
mongot-community的容器在search-communityDocker网络上启动容器。
Verify the health of the mongot process.
To verify, send a request by using a HTTP client or curl to the /health endpoint. For example, send a curl request similar to the following sample request:
curl localhost:8080/health
端点在响应中返回以下内容之一:
SERVING, 如果mongot进程正在运行mongot可能无法提供服务查询,因为它不检查索引的状态,而索引必须处于Ready状态才能提供服务查询。NOT_SERVING,如果mongot进程未运行
有关详细信息,请参阅验证 mongot 连接。
使用 Docker 卸载 MongoDB Search 和 MongoDB 向量搜索
要从系统中完全删除 MongoDB Search 和 MongoDB 向量搜索,请删除容器映像、配置文件以及任何数据或日志目录。以下部分将指导您完成必要步骤。
Drop the mongot user.
要删除 mongot 用户,请运行以下命令,并将 <mongot_username> 替换为为 mongot 创建的用户名:
use admin db.dropUser("<mongot_username>")
有关详情,请参阅 db.dropUser()。
后续步骤
创建MongoDB Search 索引