Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Instalar o desinstalar mongot en un contenedor de Docker

Podés instalar el proceso de búsqueda, mongot, en MongoDB Community Edition. El proceso de búsqueda está disponible para su implementación como imagen en Docker. El proceso mongot ofrece soporte de texto completo y búsqueda semántica con tus propias incrustaciones o incrustaciones automatizadas.

Nota

Para incorporarse más rápidamente a una implementación destinada a la experimentación, consulta el Inicio rápido de desarrollo local de MongoDB Search y búsqueda vectorial de MongoDB.

Importante

mongot sincroniza datos de mongod y requiere un set de réplicas de MongoDB. Una implementación autónoma de mongod no es compatible con mongot.

Antes de implementar mongot, complete los siguientes pasos:

  1. Instala Docker y Docker Compose.

  2. Si deseas que MongoDB búsqueda vectorial genere automáticamente incrustaciones para los datos de texto de tu colección, crea claves API de servicio de endpoint. Para obtener más información, consulta incrustación automatizada.

    Importante

    La incrustación automatizada está en modo de vista previa. La funcionalidad y la documentación correspondiente pueden cambiar en cualquier momento durante el periodo de Vista previa. Para obtener más información, consulte Funcionalidades de vista previa.

    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.

    Nota

    El endpoint de tu proveedor para generar embeddings depende de si creas las claves API desde la interfaz de usuario de Atlas o directamente desde Voyage IA.

Advertencia

Este procedimiento proporciona una configuración por defecto mínima e insegura que no habilita el control de acceso. Los pasos crean una implementación destinada únicamente a la experimentación local.

Antes de exponer estos contenedores y utilizar su configuración en producción, consulte los siguientes recursos para proteger su implementación:

1

Para obtener la imagen de Docker mongot, ejecuta el siguiente comando:

docker pull mongodb/mongodb-community-search:latest

Para verificar que la imagen está en su Docker Desktop, ejecute el siguiente comando:

docker image ls mongodb/mongodb-community-search
2

Para crear una red de Docker para la comunicación entre contenedores de la base de datos y los contenedores de búsqueda, ejecute el siguiente comando:

docker network create search-community
3

Para descargar la imagen de Docker de MongoDB, ejecute el siguiente comando:

docker pull mongodb/mongodb-community-server:latest

Nota

Debes tener un mínimo de MongoDB 8.3+ para usar MongoDB Search con una implementación local. Para obtener más información, consulta Compatibilidad de MongoDB Search.

Para obtener detalles adicionales sobre la instalación de MongoDB con Docker, consulte Instalar MongoDB Community con Docker.

4

Crea un archivo de contraseñas para que mongot se conecte a mongod. Seleccione su sistema operativo y ejecute el comando:

Reemplace <mongot_password> con su contraseña y ejecute el siguiente comando para crear un archivo llamado passwordFile en su directorio actual:

echo -n "<mongot_password>" > passwordFile
chmod 400 passwordFile

Reemplace <mongot_password> con su contraseña y ejecute el siguiente comando para crear un archivo llamado passwordFile dentro de un volumen con nombre administrado por Docker llamado mongot-secrets. Haga referencia a este volumen en lugar de a una ruta de host cuando inicie mongot en un paso posterior.

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"

En Windows, un archivo host montado en un enlace no conserva los bits de permiso de Unix dentro de un contenedor de Linux. La capa de uso compartido de archivos de Docker Desktop anula los permisos que estableces en el lado de NTFS, y Windows no tiene un equivalente chmod nativo. El contenedor desechable del comando anterior establece los permisos correctamente en el lado de Linux.

Nota

La opción -n evita una nueva línea al final.

5

Para crear el archivo de configuración, se debe guardar el siguiente código en mongod.conf o en la ubicación de preferencia.

# 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
6

Para comenzar el mongod:

  • Reemplace </path/to/data/db> con la ruta al directorio local para el volumen montado.

  • Reemplace </path/to/mongod.conf> con la ruta al archivo de configuración que creó anteriormente.

  • En Windows, reemplace la barra invertida (\) al final de cada línea con el carácter de continuación de línea para su shell. El símbolo del sistema utiliza un acento circunflejo (^) y PowerShell utiliza un acento grave.

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
7

Ejecute el siguiente comando para conectarse a la instancia mongod que inició en el puerto 27017:

docker exec -it mongod mongosh --port 27017
8

mongot debe poder conectarse a la implementación de MongoDB a través de un usuario con el rol de searchCoordinator.

Ejecute el siguiente comando para conectarse a la base de datos admin:

use admin

Para crear un usuario con el rol searchCoordinator:

  • Reemplace <mongot_username> por un nombre de usuario para su usuario mongot.

  • Se debe reemplazar <mongot_password> con la contraseña que se especificó en el passwordFile en el paso 4.

  • Ejecuta el siguiente comando:

db.createUser(
{
user: "<mongot_username>",
pwd: "<mongot_password>",
roles: [ "searchCoordinator" ]
}
)

Para obtener más información sobre la creación de usuarios, consulte Crear un usuario en implementaciones autogestionadas.

9

Puedes configurar mongot con un archivo de configuración YAML. Debes especificar el nombre de usuario que especificaste en el paso anterior como el syncSource.replicaSet.scramAuth.username. También debes especificar el passwordFile que creaste en el paso anterior como el syncSource.replicaSet.scramAuth.passwordFile.

Para obtener más información sobre las opciones de configuración de mongot, consulte Opciones de mongot.

Por ejemplo, se puede adaptar la configuración al entorno local como se muestra a continuación:

# 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

Guarde su archivo en mongot.config o en la ubicación que prefiera.

Ambos contenedores se ejecutan en la misma red Docker search-community.

10

Para iniciar el binario Search in Community (mongot), seleccione su sistema operativo y ejecute el comando:

  • Reemplace </path/to/data/mongot> con la ruta al directorio local del volumen montado para almacenar los datos de mongot.

  • Reemplaza </path/to/mongot.conf> por la ruta hacia el archivo de configuración mongot que creaste en el paso anterior.

  • Reemplace </path/to/passwordFile> con la ruta al archivo de contraseñas que creó.

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
  • Reemplace </path/to/data/mongot> con la ruta al directorio local del volumen montado para almacenar los datos de mongot.

  • Reemplaza </path/to/mongot.conf> por la ruta hacia el archivo de configuración mongot que creaste en el paso anterior.

  • Establezca syncSource.replicaSet.scramAuth.passwordFile en su archivo de configuración mongot en "/secrets/passwordFile" en lugar de "/passwordFile". El comando monta el volumen mongot-secrets que creó en el paso 4 en /secrets en el contenedor.

  • En PowerShell, reemplace cada intercalación (^) con una comilla invertida. El comando utiliza el carácter de continuación de línea de intercalación (^) para el símbolo del sistema.

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

Este comando:

  • Monta el volumen.

  • Monta un archivo de configuración desde un volumen local.

  • Especifica el rango de puertos.

  • Expone el puerto de métricas.

  • Inicia el contenedor en la red Docker search-community con un contenedor llamado mongot-community.

11

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

El endpoint devuelve uno de los siguientes en la respuesta:

  • SERVING, si el proceso mongot se está ejecutando

    mongot es posible que no sirva queries, ya que no verifica el estado de los índices, que deben estar en estado Ready para servir queries.

  • NOT_SERVING, si el proceso mongot no está en ejecución

Para obtener más información, consulta Verificar la conexión de mongot.

Para remover completamente MongoDB Search y MongoDB Vector Search de un sistema, remueva la imagen del contenedor, los archivos de configuración y cualquier directorio de datos o registros. La siguiente sección le guía a través de los pasos necesarios.

1

Para descartar el usuario mongot, ejecute los siguientes comandos, reemplazando <mongot_username> con el nombre de usuario que creó para mongot:

use admin
db.dropUser("<mongot_username>")

Para obtener más detalles, consulte db.dropUser().

2

Para detener el proceso mongot, detén la imagen del contenedor que se está ejecutando en Docker.

3

Para remover los archivos de configuración mongot y mongod, ejecuta los siguientes comandos utilizando la ruta completa a tus archivos de configuración:

rm /path/to/config.default.yml
rm /path/to/mongod.conf
4

Para remover el archivo de contraseñas, ejecute los siguientes comandos utilizando la ruta completa al archivo de contraseñas:

rm /path/to/passwordFile
5

Para remover el directorio de datos que almacena los datos de mongot, se debe ejecutar el siguiente comando utilizando la ruta completa al directorio de datos mongot:

rm /path/to/mongot/data