ステップ 1: Atlas Search インデックスを作成する
Atlas Search インデックスは、簡単に検索可能な形式でデータを分類するデータ構造であり、タームとタームを含むドキュメントの間をマッピングします。Atlas Search インデックスを使用すると、特定の識別子を使用してドキュメントをすばやく検索できます。Atlas Search を使用して Atlas クラスター内のデータをクエリするには、Atlas Search インデックスを構成する必要があります。
Atlas Search インデックスは、単一または複数のフィールドで作成できます。データのソートやフィルタリングによく使用するフィールドはインデックスを作成して、クエリ時に関連データを含むドキュメントをすばやく取得できるようにすることをお勧めします。
Atlas Search インデックスは、 Atlas UI 、 Atlas Search API 、 Atlas CLI 、 MongoDB Compass 、または希望言語でサポートされている MongoDB ドライバー を使用して作成できます。
このチュートリアルでは、サンプル データセットの sample_mflix.movies
コレクションを使用します。
Atlas UI
Atlas Atlasで、プロジェクトの {0 ページにGoします。GoClusters
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
まだ表示されていない場合は、サイドバーの [Clusters] をクリックします。
[ Clusters (クラスター) ] ページが表示されます。
GoAtlas Searchクラスターの ページに します。
GoAtlas Searchページには、サイドバー、Data Explorer 、またはクラスターの詳細ページから できます。
サイドバーで、 Services見出しの下のAtlas Searchをクリックします。
[ Select data sourceドロップダウンからクラスターを選択し、[ Go to Atlas Search ] をクリックします。
Atlas Searchページが表示されます。
クラスターの [Browse Collections] ボタンをクリックします。
データベースを展開し、コレクションを選択します。
コレクションのSearch Indexesタブをクリックします。
Atlas Searchページが表示されます。
クラスタの名前をクリックします。
[Atlas Search] タブをクリックします。
Atlas Searchページが表示されます。
Index Name を入力し、Database and Collection を設定します。
Index Nameフィールドに
default
と入力します。インデックスに
default
と名付けると、 $searchパイプライン ステージでindex
パラメータを指定する必要がなくなります。 インデックスにカスタム名を付ける場合は、index
パラメータでこの名前を指定する必要があります。Database and Collectionセクションで、
sample_mflix
データベースを検索し、movies
コレクションを選択します。
インデックスの定義を指定します。
動的マッピングまたは静的マッピングを使用する Atlas Search インデックスを作成できます。 動的マッピングと静的マッピングについて詳しくは、「静的マッピングと動的マッピング 」を参照してください。
次のインデックス定義は、 movies
コレクション内のサポートされている型のフィールドを動的にインデックス化します。 Atlas Search Visual Editor またはAtlas Search JSON Editor を使用して、 Atlas userインターフェースでインデックスを作成できます。
ビジュアル エディター
[Next] をクリックします。
movies
コレクションの"default"
インデックス定義を確認します。
JSON エディター
[Next] をクリックします。
インデックスの定義を確認します。
インデックス定義は、次のようになります。
{ "mappings": { "dynamic": true } } 上記のインデックス定義は、
movies
コレクション内の各ドキュメントでサポートされているタイプのフィールドを動的にインデックス化します。[Next] をクリックします。
Atlas Search API
サンプル cURL リクエストをコピーして、希望のテキストエディタに貼り付けます。
次のインデックス定義は、 movies
コレクション内のサポートされているタイプのフィールドを動的にインデックス化します。
1 PUBLIC_KEY=MY_PUBLIC_KEY # replace replace with your public key 2 PRIVATE_KEY=MY_PRIVATE_KEY # replace with your private key 3 GROUP_ID=YOUR_GROUP_ID # replace with your project ID 4 CLUSTER_NAME=YOUR_CLUSTER_NAME # replace with your cluster's name 5 6 curl --user "$PUBLIC_KEY:$PRIVATE_KEY" --digest \ 7 --header "Content-Type: application/json" \ 8 --include \ 9 --request POST "https://cloud.mongodb.com/api/atlas/v2/groups/$GROUP_ID/clusters/$CLUSTER_NAME/search/indexes?pretty=true" \ 10 --data '{ 11 "collectionName": "movies", 12 "database": "sample_mflix", 13 "definition":{ 14 "mappings": { 15 "dynamic": true 16 } 17 }, 18 "name": "default" 19 }'
サンプル cURL リクエスト内の変数を置き換えます。
サンプル cURL リクエストはこれらの変数を使用します。 cURL コマンドを実行して Atlas Search インデックスを作成する前に、これらの変数を必要な値に置き換えます。
名前 | タイプ | 説明 |
---|---|---|
PUBLIC_KEY | string | API認証情報の公開 API キー。 |
private_KEY | string | API認証情報のプライベート API キー。 |
GROUP_ID | string | インデックスを作成したいコレクションを持つクラスターを含むプロジェクトを識別する、一意の 24 桁の 16 進数文字stringAtlas Search 。 |
CLUSTER_NAME | string | Atlas Search インデックスを作成するコレクションを持つクラスターを識別する、人間が判読可能なラベル。 APIを使用してCLUSTER_NAMEを取得します。 Atlas はクラスターごとに、名前フィールドにCLUSTER_NAMEを返します。 |
Atlas CLI
注意
Atlas Search は、Atlas CLI を使用して作成したローカル Atlas 配置で使用することもできます。 詳細については、「 Atlas 配置のローカル配置の作成 」を参照してください。
JSON インデックス定義を作成してファイルに保存します。
次のサンプルインデックス定義をコピーし、JSON インデックスの例を新しいファイルに貼り付けて、ファイルを保存します。
次のインデックス定義は、 movies
コレクション内のサポートされているタイプのフィールドを動的にインデックス化します。
1 { 2 "name": "INDEX_NAME", 3 "clusterName": "CLUSTER_NAME", 4 "collectionName": "movies", 5 "database": "sample_mflix", 6 "mappings": { 7 "dynamic": true 8 } 9 }
サンプル Atlas CLI リクエストをコピーして変更します。
次のサンプル Atlas CLI リクエストをお気に入りのテキストエディタに貼り付け、変数を置き換えます。
atlas clusters search index create \ --clusterName CLUSTER_NAME \ --file FILE_PATH \ --projectId PROJECT_ID --profile PROFILE_NAME
Atlas CLI リクエストのサンプルでは、これらの変数が使用されます。 コマンドを実行して Atlas Search インデックスを作成する前に、これらの変数を必要な値に置き換えます。
名前 | タイプ | 説明 |
---|---|---|
Project_ID | string | クラスターを含むプロジェクトを識別する一意の 24 桁の 16 進数文字string 。 クラスターには、Atlas Search インデックスを作成するコレクションが含まれています。 |
CLUSTER_NAME | string | クラスターを識別する一意な 24 桁の 16 進数の文字string 。 クラスターには、Atlas Search インデックスを作成するコレクションが含まれています。 |
FILE_PATH | string | 前の手順で作成して保存した JSON インデックス ファイルへのパス .json ファイル拡張子を含む) |
PROFILE_NAME | string | 任意。 プロジェクトの公開鍵と秘密鍵を設定するプロファイルの名前。 詳細については、 「 接続設定を保存する 」を参照してください。 --profile フラグを削除すると、Atlas CLI はデフォルトのプロファイルを使用します。 |
MongoDB Compass
MongoDB Compass から MongoDB 7.0以降を実行しているM10
以降のクラスターに Atlas Search インデックスを作成できます。
MongoDB Compass の Atlas クラスターに接続します。
Compass を開き、Atlas クラスターに接続します。接続の詳細な手順については、「Compass 経由での接続」を参照してください。
プログラム的に
Atlas Search インデックスは、 mongosh
または希望言語でサポートされているMongoDB ドライバーを使用して、プログラムで作成できます。
前提条件
任意のクラスター層で Atlas Search インデックスをプログラムで作成および管理するには、次のMongoDBドライバー のいずれかを使用できます。
MongoDB ドライバー | バージョン |
---|---|
1.25.0 以上 | |
3.9.0 以上 | |
2.21.0 以上 | |
1.13.0 以上 | |
4.11.0 以上 | |
9.0 以上 | |
3.3.0 以上 | |
5.2.0 以上 | |
5.6.0 以上 | |
1.17.0 以上 | |
4.5 以上 | |
2.19.2 以上 | |
2.8.0 以上 | |
5.2.0 以上 |
➤ [言語の選択]ドロップダウン メニューを使用して、このセクション内の例の言語を設定します。
手順
mongosh
内のクラスターに接続します。
ターミナル ウィンドウでmongosh
を開き、クラスターに接続します。 接続の詳細な手順については、「 mongosh
経由での接続 」を参照してください。
sample_mflix
データベースを使用します。
mongosh
プロンプトで次のコマンドを実行します。
use sample_mflix
クエリをコピーして Program.cs
ファイルに貼り付けます。
using MongoDB.Bson; using MongoDB.Driver; // connect to your Atlas deployment var uri = "<connection-string>"; var client = new MongoClient(uri); var db = client.GetDatabase("sample_mflix"); var collection = db.GetCollection<BsonDocument>("movies"); // define your Atlas Search index var index = new CreateSearchIndexModel( "default", new BsonDocument { { "mappings", new BsonDocument { { "dynamic", true } } } }); var result = collection.SearchIndexes.CreateOne(index); Console.WriteLine(result);
クエリ内の <connection-string>
を置き換え、ファイルを保存します。
接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。
以下のコードをコピーして、create-index.js
ファイルに貼り付けます。
const { MongoClient } = require("mongodb"); // connect to your Atlas deployment const uri = "<connection-string>"; const client = new MongoClient(uri); async function run() { try { // set namespace const database = client.db("sample_mflix"); const collection = database.collection("movies"); // define your Atlas Search index const index = { name: "default", definition: { /* search index definition fields */ "mappings": { "dynamic": true } } } // run the helper method const result = await collection.createSearchIndex(index); console.log(result); } finally { await client.close(); } } run().catch(console.dir);
クエリ内の <connection-string>
を置き換え、ファイルを保存します。
接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。
次のステップ
インデックスの作成が完了したら、「ステップ 2: Atlas Search クエリの実行 」に進みます。