Atlas Search インデックス
Overview
Atlas Searchを使用すると、MongoDB Atlas でホストされているコレクションに対して全文検索を実行できます。 Atlas Search インデックスは、検索の動作とインデックスを作成するフィールドを指定します。
次のセクションでは、Atlas Search インデックスの作成、一覧表示、更新、削除する方法を示すコード例を示します。
検索インデックスを作成
createSearchIndexes
コマンドを mongoc_collection_command_simple()
関数に渡して、1 つ以上の Atlas Search インデックスを作成できます。
この関数を使用して Atlas ベクトル検索インデックスを作成することもできます。 Atlas ベクトル検索を使用すると、 MongoDB Atlasに保存されているベクトル埋め込みに対してセマンティック検索を実行できます。この機能の詳細については、Atlas ドキュメントの「 Atlas ベクトル検索の概要 」を参照してください。
次のコード例は、Atlas Search インデックスの作成方法を示しています。
bson_t cmd; bson_error_t error; char *cmd_str = bson_strdup_printf ( BSON_STR ({ "createSearchIndexes" : "%s", "indexes" : [ {"definition" : {"mappings" : {"dynamic" : false}}, "name" : "<index name>"} ] }), "<collection name>"); bson_init_from_json (&cmd, cmd_str, -1, &error); bson_free (cmd_str); if (mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) { printf ("Successfully created search index\n"); } else { fprintf (stderr, "Failed to create search index: %s", error.message); } bson_destroy (&cmd);
次のコード例は、複数のインデックスを作成する方法を示しています。
bson_t cmd; bson_error_t error; char *cmd_str = bson_strdup_printf ( BSON_STR ({ "createSearchIndexes" : "%s", "indexes" : [ {"definition" : {"mappings" : {"dynamic" : false}}, "name" : "<first index name>"}, {"definition" : {"mappings" : {"dynamic" : false}}, "name" : "<second index name>"} ] }), "<collection name>"); bson_init_from_json (&cmd, cmd_str, -1, &error); bson_free (cmd_str); if (mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) { printf ("Successfully created search indexes\n"); } else { fprintf (stderr, "Failed to create search indexes: %s", error.message); } bson_destroy (&cmd);
Atlas Searchインデックスの定義に使用される構文の詳細については、Atlas ドキュメントの「 Atlas Search インデックス構文の確認」ガイドを参照してください。
検索インデックスをリストする
$listSearchIndexes
集計ステージを mongoc_collection_aggregate()
関数に渡すと、コレクション内のすべての Atlas Search インデックスを返すことができます。
次のコード例は、コレクション内の検索インデックスのリストを出力する方法を示しています。
bson_t pipeline; const bson_t *doc; bson_error_t error; const char *pipeline_str = BSON_STR ({"pipeline" : [ {"$listSearchIndexes" : {}} ]}); bson_init_from_json (&pipeline, pipeline_str, -1, &error); mongoc_cursor_t *cursor = mongoc_collection_aggregate (collection, MONGOC_QUERY_NONE, &pipeline, NULL, NULL); while (mongoc_cursor_next (cursor, &doc)) { char *str = bson_as_canonical_extended_json (doc, NULL); printf ("%s\n", str); bson_free (str); } bson_destroy (&pipeline); mongoc_cursor_destroy (cursor);
検索インデックスをアップデートする
updateSearchIndex
コマンドを mongoc_collection_command_simple()
関数に渡して、Atlas Searchインデックスを更新できます。
次のコードは、検索インデックスを更新する方法を示しています。
bson_t cmd; bson_error_t error; char *cmd_str = bson_strdup_printf ( BSON_STR ({ "updateSearchIndex" : "%s", "definition" : {"mappings" : {"dynamic" : true}}, "name" : "<index name>"}), "<collection name>"); bson_init_from_json (&cmd, cmd_str, -1, &error); bson_free (cmd_str); if (mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) { printf ("Successfully updated search index\n"); } else { fprintf (stderr, "Failed to create search index: %s", error.message); } bson_destroy (&cmd);
検索インデックスを削除する
dropSearchIndexes
コマンドを mongoc_collection_command_simple()
関数に渡すと、Atlas Searchインデックスを削除できます。
次のコードは、コレクションから検索インデックスを削除する方法を示しています。
bson_t cmd; bson_error_t error; char *cmd_str = bson_strdup_printf ( BSON_STR ({ "dropSearchIndexes" : "%s", "index" : "<index name>" }), "<collection name>"); bson_init_from_json (&cmd, cmd_str, -1, &error); if (mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) { printf ("Successfully deleted search index\n"); } else { fprintf (stderr, "Failed to delete search index: %s", error.message); } bson_destroy (&cmd);
詳細情報
MongoDB Atlas Search の詳細については、「 Atlas Search インデックス」のドキュメントを参照してください。
API ドキュメント
このガイドで説明されている関数の詳細については、次のAPIドキュメントを参照してください。