MongoDB Community Edition では、検索プロセス mongot をインストールできます。検索プロセスは、 Dockerではイメージとして配置で利用できます。mongot プロセスは、独自の埋め込みまたは自動埋め込みを使用した全文検索とセマンティック検索をサポートしています。
MongoDB Search とベクトル検索を Docker でインストールする
注意
実験用の配置でより迅速にオンボードするには、MongoDB Search および MongoDB ベクトル検索 ローカル開発クイック スタートを参照してください。
始める前に
重要
mongot mongod からデータを同期し、MongoDB レプリカセットが必要です。スタンドアロン配置mongod は mongot をサポートしません。
mongot を配置する前に、次の手順を完了します。
DockerとDocker Compose をインストールします。
MongoDB ベクトル検索がコレクション内のテキストデータの埋め込みを自動的に生成する場合は、エンドポイントとなる接続されたデバイス 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 UIからAPIキーを作成するか、Voyage AIから直接 API キーを作成するかによって異なります。
手順
警告
この手順では、アクセス制御を有効にしない最小限の安全でないデフォルト構成を提供します。この手順では、ローカルでの実験のみを目的とした配置を作成します。
これらのコンテナを公開し、本番環境で設定を使用する前に、次のリソースを参照して配置を保護します。
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 の行継続文字に置き換えます。Command Prompt はキャレット (^) を使用します。また、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)を開始するには、オペレーティングシステムを選択して、コマンドを実行します。
mongotデータを保存するには、</path/to/data/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
mongotデータを保存するには、</path/to/data/mongot>をマウントされたボリュームのローカル ディレクトリへのパスに置き換えます。</path/to/mongot.conf>を、前のステップで作成したmongot構成ファイルへのパスに置き換えます。syncSource.replicaSet.scramAuth.passwordFileをmongot構成ファイルの"/passwordFile"ではなく"/secrets/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() を参照してください。