Docs Menu
Docs Home
/
MongoDB Atlas
/ /

ステップ 1: Atlas Search インデックスを作成する

項目一覧

  • Atlas UI
  • Atlas Search API
  • Atlas CLI
  • MongoDB Compass
  • プログラム的に
  • 次のステップ

重要

サーバーレスインスタンスで使用できない機能

サーバーレスインスタンスは現時点ではこの機能をサポートしていません。詳細については、 サーバーレスインスタンスの制限を参照してください。

Atlas Search インデックスは、簡単に検索可能な形式でデータを分類するデータ構造であり、タームとタームを含むドキュメントの間をマッピングします。Atlas Search インデックスを使用すると、特定の識別子を使用してドキュメントをすばやく検索できます。Atlas Search を使用して Atlas クラスター内のデータをクエリするには、Atlas Search インデックスを構成する必要があります。

Atlas Search インデックスは、単一または複数のフィールドで作成できます。データのソートやフィルタリングによく使用するフィールドはインデックスを作成して、クエリ時に関連データを含むドキュメントをすばやく取得できるようにすることをお勧めします。

Atlas Search インデックスは、 Atlas UIAtlas Search APIAtlas CLI 、 MongoDB Compass 、または希望言語でサポートされている MongoDB ドライバー を使用して作成できます。

このチュートリアルでは、サンプル データセット sample_mflix.moviesコレクションを使用します。

1
  1. まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー

  2. まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。

  3. まだ表示されていない場合は、サイドバーの [Clusters] をクリックします。

    [ Clusters (クラスター) ] ページが表示されます。

2

GoAtlas Searchページには、サイドバー、Data Explorer 、またはクラスターの詳細ページから できます。

  1. サイドバーで、 Services見出しの下のAtlas Searchをクリックします。

  2. [ Select data sourceドロップダウンからクラスターを選択し、[ Go to Atlas Search ] をクリックします。

    Atlas Searchページが表示されます。

  1. クラスターの [Browse Collections] ボタンをクリックします。

  2. データベースを展開し、コレクションを選択します。

  3. コレクションのSearch Indexesタブをクリックします。

    Atlas Searchページが表示されます。

  1. クラスタの名前をクリックします。

  2. [Atlas Search] タブをクリックします。

    Atlas Searchページが表示されます。

3
4
  • ガイドを利用する場合は、Atlas Search Visual Editor を選択します。

  • Raw インデックス定義を編集するには、Atlas Search JSON Editor を選択します。

5
  1. Index Nameフィールドにdefaultと入力します。

    インデックスにdefaultと名付けると、 $searchパイプライン ステージでindexパラメータを指定する必要がなくなります。 インデックスにカスタム名を付ける場合は、 indexパラメータでこの名前を指定する必要があります。

  2. Database and Collectionセクションで、 sample_mflixデータベースを検索し、 moviesコレクションを選択します。

6

動的マッピングまたは静的マッピングを使用する Atlas Search インデックスを作成できます。 動的マッピングと静的マッピングについて詳しくは、「静的マッピングと動的マッピング 」を参照してください。

次のインデックス定義は、 moviesコレクション内のサポートされている型のフィールドを動的にインデックス化します。 Atlas Search Visual Editor またはAtlas Search JSON Editor を使用して、 Atlas userインターフェースでインデックスを作成できます。

  1. [Next] をクリックします。

  2. moviesコレクションの"default"インデックス定義を確認します。

  1. [Next] をクリックします。

  2. インデックスの定義を確認します。

    インデックス定義は、次のようになります。

    {
    "mappings": {
    "dynamic": true
    }
    }

    上記のインデックス定義は、 moviesコレクション内の各ドキュメントでサポートされているタイプのフィールドを動的にインデックス化します。

  3. [Next] をクリックします。

7
8
9

インデックスが作成中であることを知らせるモーダル ウィンドウが表示されます。Close ボタンをクリックします。

10

インデックスの構築には約 1 分かかります。 作成している間、 Status列にはBuild in Progressと表示されます。 作成が完了すると、 Status列にはActiveと表示されます。

1

次のインデックス定義は、 moviesコレクション内のサポートされているタイプのフィールドを動的にインデックス化します。

1PUBLIC_KEY=MY_PUBLIC_KEY # replace replace with your public key
2PRIVATE_KEY=MY_PRIVATE_KEY # replace with your private key
3GROUP_ID=YOUR_GROUP_ID # replace with your project ID
4CLUSTER_NAME=YOUR_CLUSTER_NAME # replace with your cluster's name
5
6curl --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 }'
2

サンプル 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を返します。

3
1{
2 "collectionName" : "movies",
3 "database" : "sample_mflix",
4 "indexID" : "60bfd25f59fc81594354eed3",
5 "mappings" : {
6 "dynamic" : true
7 },
8 "name" : "default",
9 "status" : "IN_PROGRESS"
10}

注意

Atlas Search は、Atlas CLI を使用して作成したローカル Atlas 配置で使用することもできます。 詳細については、「 Atlas 配置のローカル配置の作成 」を参照してください。

1

次のサンプルインデックス定義をコピーし、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}
2

次のサンプル 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 はデフォルトのプロファイルを使用します。
3

リクエストを実行します。 Atlas Search がインデックスの作成を開始すると、次の応答が届きます。

{
"collectionName": "movies",
"database": "sample_mflix",
"indexID": <index-id>,
"mappings": {
"dynamic": true
},
"name": <index-name>,
"status": "IN_PROGRESS"
}

MongoDB Compass から MongoDB 7.0以降を実行しているM10以降のクラスターに Atlas Search インデックスを作成できます。

1

Compass を開き、Atlas クラスターに接続します。接続の詳細な手順については、「Compass 経由での接続」を参照してください。

2

Database画面で、 sample_mflixデータベースをクリックし、 moviesコレクションをクリックします。

3
  1. [ Indexesタブをクリックし、[ ] を選択します。Search Indexes

  2. [ Create Indexをクリックして、インデックス作成ダイアログボックスを開きます。

  3. インデックスの名前を指定し、検索インデックスの定義を指定します。

    インデックス名

    default

    インデックスの定義
    {
    mappings: { dynamic: true }
    }
  4. [Create Search Index] をクリックします。

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 以上

➤ [言語の選択]ドロップダウン メニューを使用して、このセクション内の例の言語を設定します。


1

ターミナル ウィンドウでmongoshを開き、クラスターに接続します。 接続の詳細な手順については、「 mongosh経由での接続 」を参照してください。

2

mongoshプロンプトで次のコマンドを実行します。

use sample_mflix
3
db.movies.createSearchIndex(
"default",
{ mappings: { dynamic: true } }
)
default
1
  1. create-index-tutorial という新しいディレクトリを作成し、dotnet new コマンドでプロジェクトを初期化します。

    mkdir create-index-tutorial
    cd create-index-tutorial
    dotnet new console
  2. .NET/C# ドライバーを依存関係としてプロジェクトに追加します。

    dotnet add package MongoDB.Driver
2
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);
3

接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。

4
dotnet run csharp-create-index.csproj
default
1
2
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);
3

接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。

4

インデックスを作成するには、次のコマンドを実行します。

node create-index.js
default

インデックスの作成が完了したら、「ステップ 2: Atlas Search クエリの実行 」に進みます。