MongoDB Community Edition 에 검색 프로세스 mongot을(를) 설치할 수 있습니다. 검색 프로세스 Docker 에서 이미지로 배포서버 할 수 있습니다. mongot 프로세스 자체 임베딩 또는 자동 임베딩을 사용한 전체 텍스트 검색 및 시맨틱 검색 지원합니다.
Docker를 사용하여 MongoDB Search 및 벡터 검색 설치
참고
실험용 배포서버로 더 빠르게 온보딩하려면 MongoDB Search 및 MongoDB 벡터 검색 지역 개발 빠른 시작을 참조하세요.
시작하기 전에
중요
mongot mongod 에서 데이터를 동기화하며 MongoDB 복제본 세트가 필요합니다. 독립형 mongod 배포서버는 mongot를 지원하지 않습니다.
mongot를 배포하기 전에 다음 단계를 완료하세요.
Docker 및 Docker Compose를 설치합니다.
MongoDB Vector Search가 컬렉션의 텍스트 데이터에 대한 임베딩을 자동으로 생성하도록 하려면 엔드포인트 서비스 API 키를 생성하세요. 자세한 내용은 자동 임베딩을(를) 참조하세요.
중요
자동 임베딩이 미리 보기로 제공됩니다. 기능 및 해당 설명서는 미리 보기 기간에 언제든지 변경될 수 있습니다. 자세히 학습 미리 보기 기능을 참조하세요.
아직 키가 없는 경우 Atlas UI에서 엔드포인트 서비스 API 키를 생성합니다. 두 개의 Atlas 프로젝트에서 인덱스 시간에 임베딩을 생성하기 위한 키와 쿼리 시간에 임베딩을 생성하기 위한 키를 각각 생성하는 것이 좋습니다.
참고
임베딩을 생성하기 위한 제공자 엔드포인트는 Atlas UI 에서 API 키를 생성하는지, 아니면 Voyage AI 에서 직접 생성하는지에 따라 달라집니다.
절차
경고
이 절차는 액세스 제어를 활성화하지 않는 최소한 및 안전하지 않은 기본값 구성을 제공합니다. 이 단계는 로컬 실험용으로만 사용할 수 있는 배포를 만듭니다.
이러한 컨테이너를 노출하고 설정을 생산에 사용하기 전에 배포서버를 보안하려면 다음 리소스를 참조하세요.
MongoDB Docker 이미지를 다운로드합니다.
MongoDB Docker 이미지를 다운로드 하려면 다음 명령을 실행 .
docker pull mongodb/mongodb-community-server:latest
참고
온프레미스 배포서버에서 MongoDB Search를 사용하려면 최소 MongoDB 8.3+ 이상이 있어야 합니다. 자세한 내용은 MongoDB Search 호환성을 참조하세요.
Docker 사용하여 MongoDB 설치하는 방법에 대한 자세한 내용은 Docker 로 MongoDB Community 설치를 참조하세요.
Create a mongot sync-user password file.
mongod에 연결할 mongot의 비밀번호 파일을 만듭니다. 운영 체제를 선택하고 명령을 실행합니다.
<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 deployment 에 연결할 수 있어야 합니다.
다음 명령을 실행하여 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을"/passwordFile"대신"/secrets/passwordFile"로 설정합니다. 명령은 5단계에서 만든mongot-secrets볼륨을 4 컨테이너의/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
엔드포인트는 응답에서 다음 중 하나를 반환합니다.
SERVINGmongot프로세스가 실행 중인 경우mongot인덱스의 상태를 확인하지 않으므로 쿼리를 제공하지 않을 수 있으며, 쿼리를 제공하려면 인덱스는Ready상태여야 합니다.NOT_SERVINGmongot프로세스가 실행 중이 아닌 경우
자세한 내용은 mongot 연결 확인을 참조하세요.
Docker를 사용하여 MongoDB Search 및 MongoDB 벡터 검색 제거
시스템에서 MongoDB Search 및 MongoDB Vector Search를 완전히 제거하려면 컨테이너 이미지, 구성 파일, 데이터 또는 로그 디렉토리를 제거해야 합니다. 다음 섹션에서는 필요한 단계를 안내합니다.
Drop the mongot user.
mongot 사용자를 제거하려면 <mongot_username> 을 mongot에 대해 만든 사용자 이름으로 바꾸고 다음 명령을 실행합니다.
use admin db.dropUser("<mongot_username>")
자세한 내용은 db.dropUser()를 참조하십시오.