Atlas Search 索引
Overview
Atlas Search 使您能够对 MongoDB Atlas 上托管的集合执行全文搜索。Atlas Search 索引指定了搜索行为以及要索引的字段。
以下部分提供的代码示例演示了如何创建、列出、更新和删除Atlas Search索引。
创建搜索索引
您可以将 createSearchIndexes
命令传递给 mongoc_collection_command_simple()
函数来创建一个或多个Atlas Search索引。
您还可以使用此函数创建Atlas Vector Search索引。 Atlas Vector Search使您能够对存储在MongoDB Atlas中的向量嵌入执行语义搜索。要学习;了解有关此功能的更多信息,请参阅Atlas文档中的Atlas Vector Search概述。
以下代码示例展示了如何创建 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文档: