AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

MongoDB Search インデックス

このガイドでは、MongoDB Search 検索インデックスを作成および管理する方法を学習できます。これらのインデックスを使用すると、 MongoDB Search 機能を使用して、Atlas クラスターに保存されているデータに対して高速で全文検索を実行できます。MongoDB Searchインデックスは、インデックスを作成するフィールド、これらのフィールドのインデックス作成方法、その他の任意設定を指定してMongoDB Searchの動作を構成します。MongoDB Search インデックスの詳細については、MongoDB Search のドキュメントを参照してください。

このガイドでは、次のアクションを実行してMongoDB 検索インデックスを管理する方法について説明します。

注意

このガイドの例では、Atlas サンプル データセットの 1 つであるsample_trainingデータベース内のpostsコレクションにアクセスします。 Atlas サンプル データのインポート手順については、Atlas ドキュメントの「サンプル データのロード」を参照してください。

MongoDB検索インデックスを作成するには、まずインデックス仕様を設定する SearchIndexModelインスタンスをビルドする必要があります。SearchIndexModelインスタンス の構築を開始するには、SearchIndexModel::builder() メソッドを呼び出します。

注意

インスタンス化モデル

Rust ドライバーは、 SearchIndexModelを含む多くのさまざまなタイプを作成するためのビルダ設計パターンを実装します。 builder()メソッドを使用して、オプション ビルダー メソッドを連鎖させることで、各タイプのインスタンスを構築できます。

Rust ドライバーは、次のSearchIndexModelビルダ メソッドを提供します。

  • definition()は、 BSON ドキュメント パラメータを受け入れ、インデックス定義を設定します

  • name()は、string パラメータを受け入れ、インデックス名を設定します

definition()ビルダー メソッドに渡す BSON ドキュメントには、 mappingsフィールドを含める必要があります。 コレクション内のサポートされているすべてのフィールドを自動的にインデックス化するには、 mappings.dynamicのネストされたフィールドをtrueに設定して動的マッピングを有効にします。 指定されたフィールドのみをインデックス化するには、 mappings.dynamicのネストされたフィールドをfalseに設定し、インデックスを作成するフィールドのリストを含めて静的マッピングを有効にします。

Tip

MongoDB 検索する フィールド マッピング

MongoDB 検索するフィールドマッピングの詳細については、Atlas ドキュメントのフィールドマッピングの定義を参照してください。

次の例では、 SearchIndexModelインスタンスにexample_indexという名前のインデックスの仕様を作成します。 このコードでは、 フィールドと フィールドのみをインデックス化するための静的マッピングを設定します。bodydate

let def = doc! { "mappings": doc! {
"dynamic": false,
"fields": {
"body": {"type": "string"},
"date": {"type": "date"}
}
}};
let idx_model = SearchIndexModel::builder()
.definition(def)
.name("example_index".to_string())
.build();

MongoDBの検索インデックスは、Collectionインスタンスでcreate_search_index()メソッドを呼び出すことで、コレクションに作成できます。このメソッドは次のパラメーターを受け入れます:

  • インデックス モデル( SearchIndexModelインスタンスで指定)

  • インデックス オプション(CreateSearchIndexOptionsインスタンスで指定)

次の例では、postsコレクションにMongoDB検索インデックスを作成しています。このコードでは、インデックス名を設定し、動的マッピングを可能にする SearchIndexModel が作成されます。次に、コードは SearchIndexModelインスタンスを create_search_index() メソッドに渡してMongoDB 検索インデックスを作成します。

let idx_model = SearchIndexModel::builder()
.definition(doc! { "mappings": doc! {"dynamic": true} })
.name("example_index".to_string())
.build();
let result = my_coll.create_search_index(idx_model, None).await?;
println!("Created MongoDB Search index:\n{}", result);

Collectionインスタンスで create_search_indexes() メソッドを呼び出すと、一度に複数のMongoDB 検索インデックスを作成できます。このメソッドは次のパラメーターを受け入れます:

  • インデックス モデルのリスト( SearchIndexModelインスタンスのベクトルとして指定)

  • インデックス オプション( CreateSearchIndexOptionsインスタンスで指定)

次の例では、postsコレクションに dynamic_indexstatic_index という名前の 2 つのMongoDB 検索インデックスを作成します。このコードでは、インデックス名と定義を指定するインデックスごとに SearchIndexModel インスタンスが作成されます。次に、コードはこれらのモデルをベクトルとして create_search_indexes() メソッドに渡し、インデックスを作成します。

let dyn_idx = SearchIndexModel::builder()
.definition(doc! { "mappings": doc! {"dynamic": true} })
.name("dynamic_index".to_string())
.build();
let static_idx = SearchIndexModel::builder()
.definition(doc! {"mappings": doc! { "dynamic": false, "fields": {
"title": {"type": "string"}}}})
.name("static_index".to_string())
.build();
let models = vec![dyn_idx, static_idx];
let result = my_coll.create_search_indexes(models, None).await?;
println!("Created MongoDB Search indexes:\n{:?}", result);

コレクションで list_search_indexes() メソッドを呼び出すと、コレクションの既存のMongoDB 検索インデックスに関する情報にアクセスできます。このメソッドは次のパラメーターを受け入れます:

次の例では、このページの「 複数の検索インデックスの作成 」セクションで作成されたMongoDB Search インデックスに関する情報にアクセスします。このコードでは、list_search_indexes() Noneメソッドを呼び出し、各パラメータに対して の値が渡されます。これは、デフォルトオプションを持つすべてのMongoDB Search インデックスに関する情報を返すようにドライバーに指示します。次に、コードは検索インデックスを出力します。

let mut cursor = my_coll.list_search_indexes(None, None, None).await?;
while let Some(index) = cursor.try_next().await? {
println!("{}\n", index);
}

Tip

カーソルの反復処理の詳細については、「 カーソルを使用したデータへのアクセス」ガイドを参照してください。

MongoDBの検索インデックスを更新するには、Collectionインスタンスでupdate_search_index()メソッドを呼び出します。このメソッドは次のパラメーターを受け入れます:

  • 更新するインデックスの名前

  • 変更されたインデックス定義ドキュメント

  • UpdateSearchIndexOptionsインスタンスで指定される インデックス オプション

次の例では、このページの「 複数の検索インデックスの作成 」セクションで作成された という名前のMongoDBstatic_index Searchインデックスをアップデートします。このコードでは、静的マッピングではなく動的マッピングを使用するようにインデックスに指示する新しいインデックス定義ドキュメントが作成されます。次に、コードは メソッドを呼び出してインデックスをアップデートします。update_search_index()

let name = "static_index";
let definition = doc! { "mappings": doc! {"dynamic": true} };
my_coll.update_search_index(name, definition, None).await?;

MongoDBの検索インデックスを削除するには、Collectionインスタンスでdelete_search_index()メソッドを呼び出します。このメソッドは次のパラメーターを受け入れます:

  • 削除するインデックスの名前

  • DropSearchIndexOptionsインスタンスで指定される インデックス オプション

The following example deletes the MongoDB Search index named example_index created in the Create a Search Index section of this page. The code passes the index name to the delete_search_index() method to delete the index:

let name = "example_index";
my_coll.drop_search_index(name, None).await?;

Rust ドライバーを使用して作成できるその他のインデックスの詳細については、「インデックスのガイド 」を参照してください。

MongoDB Search の詳細については、次の Atlas ドキュメントを参照してください。

このガイドで言及されているメソッドとタイプの詳細については、次のAPIドキュメントを参照してください。