Docs Menu
Docs Home
/ / /
Rust ドライバー
/ /

Atlas Search インデックス

項目一覧

  • Overview
  • 検索インデックスモデルの作成
  • 検索インデックスを作成
  • 複数の検索インデックスの作成
  • 検索インデックスをリストする
  • 検索インデックスをアップデートする
  • 検索インデックスを削除する
  • 詳細情報
  • API ドキュメント

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

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

注意

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

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

注意

インスタンス化モデル

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

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

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

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

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

Tip

Atlas Search フィールド マッピング

Atlas Search フィールド マッピングの詳細については、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();

コレクションに Atlas Search インデックスを作成するには、 Collectionインスタンスでcreate_search_index()メソッドを呼び出します。 このメソッドは、 SearchIndexModelインスタンスで指定されたインデックスモデルをパラメータとして受け入れます。

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

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).await?;
println!("Created Atlas Search index:\n{}", result);

Collectionインスタンスでcreate_search_indexes()メソッドを呼び出すと、一度に複数の Atlas Search インデックスを作成できます。 このメソッドは、インデックス モデルのリストをパラメーターとして受け入れます。これはSearchIndexModelインスタンスのベクトルとして指定されます。

次の例では、 postsコレクションにdynamic_indexstatic_indexという名前の Atlas Search インデックスを作成します。 このコードでは、インデックス名と定義を指定するインデックスごとに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).await?;
println!("Created Atlas Search indexes:\n{:?}", result);

コレクションでlist_search_indexes()メソッドを呼び出すと、コレクションの既存の Atlas Search インデックスに関する情報にアクセスできます。

次の例では、このページの「複数の検索インデックスの作成 」セクションで作成された Atlas Search インデックスに関する情報にアクセスします。 このコードではlist_search_indexes()メソッドを呼び出し、コレクションのすべての Atlas Search インデックスを出力します。

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

Tip

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

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

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

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

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

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

Atlas Search インデックスを削除するには、 Collectionインスタンスでdelete_search_index()メソッドを呼び出します。 このメソッドは、削除するインデックスの名前をパラメータとして受け入れます。

次の例では、このページの「検索インデックスの作成」セクションで作成されたexample_indexという名前のAtlas Search インデックスを削除します。 このコードはインデックス名をdelete_search_index()メソッドに渡してインデックスを削除します。

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

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

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

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

戻る

Indexes