删除 Atlas Search 索引
必需的访问权限
下表列出了每个角色支持的访问模式。
角色 | 操作 | Atlas UI | Atlas API | Atlas Search API | Atlas CLI |
---|---|---|---|---|---|
Project Data Access Read Only 或更高级别的角色 | 用于查看 Atlas Search 分析器和索引。 | ✓ | ✓ | ||
Project Data Access Admin 或更高级别的角色 | 创建和管理 Atlas Search 分析器和索引,并将角色分配给 API 密钥。 | ✓ | ✓ | ✓ | ✓ |
✓ | ✓ | ||||
为 API 密钥创建访问列表条目,并从 API 密钥访问列表中显示的客户端发送请求。 | ✓ | ✓ | |||
使用 Atlas 用户界面或 API 创建、查看、编辑和删除 Atlas Search 索引。 | ✓ | ✓ | ✓ |
删除 Atlas Search 索引
您可以在 Atlas 用户界面中删除 Atlas Search 索引,也可以使用mongosh
、Atlas CLI、 API或您首选语言支持的MongoDB 驱动程序以编程方式删除 Atlas Search 索引。
注意
您可以使用mongosh
命令或驾驶员辅助方法删除所有Atlas 集群层上的Atlas Search索引。
您必须至少拥有对包含索引的数据库的 readWriteAnyDatabase
角色或 readWrite
访问权限。如需了解更多信息,请参阅内置角色或特定权限。
➤ 使用选择语言下拉菜单设置本节中示例的语言。
要通过API删除 Atlas Search 索引:
发送DELETE
请求。
使用要删除的 Atlas Search 索引的唯一 ID 或名称向search/indexes/
端点发送DELETE
请求。
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/json" \ --include \ --request DELETE "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/indexes/{indexId}"
要了解有关任一端点的语法和参数的更多信息,请参阅按名称删除一个端点和按 ID 删除一个端点。
删除云部署的 Atlas Search 索引
要使用 Atlas CLI 从集群中删除搜索索引,请运行以下命令:
atlas clusters search indexes delete <indexId> [options]
要了解有关命令语法和参数的更多信息,请参阅有关atlas clusters searchindexes delete 的 Atlas CLI 文档。
删除本地部署的 Atlas Search 索引
要使用 Atlas CLI 删除指定部署的指定搜索索引,请运行以下命令:
atlas deployments search indexes delete <indexId> [options]
要了解有关命令语法和参数的更多信息,请参阅Atlas CLI AtlasAtlas Search部署 索引删除 的 文档。
在 AtlasClusters 中,转到项目的 页面。
如果尚未显示,请选择包含所需项目的组织导航栏中的Organizations菜单。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果 Clusters(数据库部署)页面尚未出现,请单击侧边栏中的 Database(数据库)。
此时会显示“集群”页面。
转到集群的 Atlas Search 页面。
您可以从侧边栏、 Data Explorer或集群详细信息页面转到 Atlas Search 页面。
在侧边栏中,单击Services标题下的Atlas Search 。
从Select data source下拉列表中,选择您的集群并单击Go to Atlas Search 。
显示Atlas Search页面。
单击集群的对应 Browse Collections 按钮。
展开数据库并选择集合。
单击集合的Search Indexes标签页。
显示Atlas Search页面。
单击集群名称。
单击 Atlas Search 标签页。
显示Atlas Search页面。
要通过mongosh
删除 Atlas Search 索引,请使用db.collection.dropSearchIndex()
方法。
该命令具有以下语法:
db.<collection>.dropSearchIndex("<index-name>")
例子
default
movies
以下命令从collection中删除名为 的搜索索引:
db.movies.dropSearchIndex("default")
注意
db.collection.dropSearchIndex()
命令不返回输出。 您可以使用 Atlas 用户界面查看索引状态。
要使用C 驱动程序删除 Atlas Search 索引,请将您的集合和删除命令传递给mongoc_collection_command_simple()
方法。
例子
将以下代码示例复制到该文件中。
以下示例应用程序指定dropSearchIndex
命令和现有索引名称。然后,应用程序将命令和索引信息转换为BSON ,并将此信息传递给mongoc_collection_command_simple()
方法以删除搜索索引。
int main (void) { mongoc_client_t *client = NULL; mongoc_collection_t *collection = NULL; mongoc_database_t *database = NULL; bson_error_t error; bson_t cmd = BSON_INITIALIZER; bool ok = true; mongoc_init(); // Connect to your Atlas deployment client = mongoc_client_new("<connectionString>"); if (!client) { fprintf(stderr, "Failed to create a MongoDB client.\n"); ok = false; goto cleanup; } // Access your database and collection database = mongoc_client_get_database(client, "<databaseName>"); collection = mongoc_database_get_collection(database, "<collectionName>"); // Specify the command and the index name const char *cmd_str = BSON_STR ({"dropSearchIndex" : "<collectionName>", "name" : "<indexName>"}); // Convert your command to BSON if (!bson_init_from_json(&cmd, cmd_str, -1, &error)) { fprintf(stderr, "Failed to parse command: %s\n", error.message); ok = false; goto cleanup; } // Run the command to drop the search index if (!mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) { fprintf(stderr, "Failed to run dropSearchIndex: %s\n", error.message); ok = false; goto cleanup; } printf ("Index dropped!\n"); cleanup: mongoc_collection_destroy(collection); mongoc_database_destroy(database); mongoc_client_destroy(client); bson_destroy(&cmd); mongoc_cleanup (); return ok ? EXIT_SUCCESS : EXIT_FAILURE; }
指定以下值并保存文件。
Atlas 连接字符串。要了解更多信息,请参阅通过驱动程序连接。
要删除索引的数据库和集合。
要删除的索引的名称。
要使用C++ 驱动程序删除 Atlas Search 索引,请在搜索索引视图上调用drop_one()
方法。
例子
将以下代码示例复制到该文件中。
以下示例应用程序在目标集合上使用search_indexes()
方法来实例化搜索索引视图。然后,应用程序对该视图调用drop_one()
方法,并将 Atlas Search 索引名称作为参数传递,以删除该索引。
using namespace mongocxx; int main() { mongocxx::instance instance{}; try { // Connect to your Atlas deployment mongocxx::uri uri("<connectionString>"); mongocxx::client client(uri); // Access your database and collection auto db = client["<databaseName>"]; auto collection = db["<collectionName>"]; // Access the indexes in your collection auto siv = collection.search_indexes(); // Delete your search index auto name = "<indexName>"; siv.drop_one(name); } catch (const std::exception& e) { std::cout<< "Exception: " << e.what() << std::endl; } return 0; }
指定以下值并保存文件。
Atlas 连接字符串。要了解更多信息,请参阅通过驱动程序连接。
要检索其索引的数据库和集合。
要删除的索引的名称。
要使用.NET/C# 驱动程序删除 Atlas Search 索引,请使用DropOne()
或DropOneAsync()
方法。
例子
以下示例应用程序从集合中删除索引。指定以下值:
Atlas 连接字符串。要了解更多信息,请参阅通过驱动程序连接。
包含要删除的搜索索引的数据库和集合。
要删除的搜索索引的名称。
using MongoDB.Bson; using MongoDB.Driver; // connect to your Atlas deployment var uri = "<connection-string>"; var client = new MongoClient(uri); var db = client.GetDatabase("<databaseName>"); var collection = db.GetCollection<BsonDocument>("<collectionName"); // drop your Atlas Search index collection.SearchIndexes.DropOne("<index name>");
若要运行示例应用程序,请创建一个名为 csharp-delete-index
的新 .NET 控制台项目,并将上一个代码示例复制到 Program.cs
文件中。然后,使用以下命令运行项目:
dotnet run csharp-delete-index.csproj
注意
DropOne()
方法不返回输出。您可以使用 Atlas 用户界面查看索引状态。
要使用Java 驱动程序删除集合上的 Atlas Search 索引,请使用dropSearchIndex()
方法。您必须有Java 驱动程序v 4 。 11 。 0或更高版本。
将以下代码示例复制到该文件中。
以下样本应用程序删除指定collection上的指定 Atlas Search 索引。
1 import com.mongodb.client.MongoClient; 2 import com.mongodb.client.MongoClients; 3 import com.mongodb.client.MongoCollection; 4 import com.mongodb.client.MongoDatabase; 5 import org.bson.Document; 6 7 public class DeleteIndex { 8 public static void main(String[] args) { 9 // connect to your Atlas cluster 10 String uri = "<connection-string>"; 11 12 try (MongoClient mongoClient = MongoClients.create(uri)) { 13 // set namespace 14 MongoDatabase database = mongoClient.getDatabase("<database-name>"); 15 MongoCollection<Document> collection = database.getCollection("<collection>"); 16 // delete the index 17 collection.dropSearchIndex("<index-name>"); 18 } 19 } 20 }
替换以下值,然后保存文件。
<connection-string>
- 您的 Atlas 连接字符串。要了解更多信息,请参阅通过驱动程序连接。注意
在连接字符串中,不要包含writeConcern设置。
<database-name>
— 包含该集合的数据库的名称。<collection-name>
— 要检索其索引的集合的名称。<index-name>
- 要删除的索引的名称。
要通过节点驱动程序删除 Atlas Search 索引,请使用dropSearchIndex
辅助方法。
例子
您可以使用以下名为drop-index.js
的示例应用程序来删除集合上的索引。 指定以下值:
Atlas 连接字符串。要了解更多信息,请参阅通过驱动程序连接。
在其中创建搜索索引的数据库和集合。
要删除的索引的名称。
// connect to your Atlas deployment const uri = "<connection-string>"; const client = new MongoClient(uri); async function run() { try { const database = client.db("<databaseName>"); const collection = database.collection("<collectionName>"); // run the helper method await collection.dropSearchIndex("<index-name>"); } finally { await client.close(); } } run().catch(console.dir);
要运行样本应用程序,请使用以下命令。
node drop-index.js
注意
dropSearchIndex
方法不返回输出。您可以使用 Atlas 用户界面查看索引状态。
要使用Python 驱动程序删除 Atlas Search 索引,请对集合调用drop_search_index()
方法。
例子
将以下代码示例复制到该文件中。
以下示例应用程序将 Atlas Search 索引名称传递给drop_search_index()
方法以删除索引。
from pymongo.mongo_client import MongoClient def delete_index(): # Connect to your Atlas deployment uri = "<connectionString>" client = MongoClient(uri) # Access your database and collection database = client["<databaseName>"] collection = database["<collectionName>"] # Delete your search index collection.drop_search_index("<indexName>")
指定以下值并保存文件。
Atlas 连接字符串。要了解更多信息,请参阅通过驱动程序连接。
要删除索引的数据库和集合。
要删除的索引的名称。