Docs 菜单
Docs 主页
/
MongoDB Atlas
/ /

删除 Atlas Search 索引

在此页面上

  • 必需的访问权限
  • 删除 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 用户界面中删除 Atlas Search 索引,也可以使用mongosh 、Atlas CLI、 API或您首选语言支持的MongoDB 驱动程序以编程方式删除 Atlas Search 索引。

注意

您可以使用mongosh 命令或驾驶员辅助方法删除所有AtlasAtlas Search Atlas集群层上的Atlas Search索引。有关支持的驾驶员版本的列表,请参阅MongoDB驱动程序。

您必须至少拥有对包含索引的数据库的 readWriteAnyDatabase 角色或 readWrite 访问权限。如需了解更多信息,请参阅内置角色特定权限


➤ 使用选择语言下拉菜单设置本节中示例的语言。


要通过 API 删除 Atlas Search 索引,请执行以下操作:

1

使用您要删除的 Atlas Search 索引的唯一 ID 或名称发送 DELETE 请求到 search/indexes/ 端点。

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 删除一个

2

要使用 Atlas CLI 从集群中删除搜索索引,请运行以下命令:

atlas clusters search indexes delete <indexId> [options]

要了解有关命令语法和参数的更多信息,请参阅 Atlas CLI 文档中的 Atlas 集群搜索索引删除部分。

提示

请参阅:相关链接

要使用 Atlas CLI 删除指定部署的指定搜索索引,请运行以下命令:

atlas deployments search indexes delete <indexId> [options]

要了解有关命令语法和参数的更多信息,请参阅Atlas CLI AtlasAtlas Search部署 索引删除 的 文档。

提示

请参阅:相关链接

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 如果尚未出现,请单击侧边栏中的 Clusters(集群)。

    会显示集群页面。

2

您可以从侧边栏、 Data Explorer 或集群详细信息页面转到 Atlas Search 页面。

  1. 在侧边栏中,单击 Services 标题下的 Atlas Search

  2. Select data source 下拉菜单中选择您的集群并单击 Go to Atlas Search

    将显示 Atlas Search 页面。

  1. 单击集群的对应 Browse Collections 按钮。

  2. 展开数据库并选择集合。

  3. 单击该集合的 Search Indexes 标签页。

    将显示 Atlas Search 页面。

  1. 单击集群的名称。

  2. 单击 Atlas Search 标签页。

    将显示 Atlas Search 页面。

3

ellipsis按钮位于面板右侧。 单击所需索引旁边的按钮并选择Delete Index

4

要通过 mongosh 删除 Atlas Search 索引,请使用 db.collection.dropSearchIndex() 方法。

该命令具有以下语法:

db.<collection>.dropSearchIndex("<index-name>")

以下命令从 movies 集合中删除名为 default 的搜索索引:

db.movies.dropSearchIndex("default")

注意

db.collection.dropSearchIndex()命令不返回输出。 您可以使用 Atlas 用户界面查看索引状态。

要使用 C 驱动程序删除您的 Atlas Search 索引,请将您的集合和 drop 命令传递给 mongoc_collection_command_simple() 方法。

1
2

以下示例应用程序指定 dropSearchIndex 命令和现有索引名称。然后,应用程序将命令和索引信息转换为 BSON,并将此信息传递给 mongoc_collection_command_simple() 方法以删除搜索索引。

#include <mongoc/mongoc.h>
#include <stdlib.h>
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;
}
3
  • Atlas 连接字符串。要了解更多信息,请参阅通过驱动程序连接

  • 您要删除索引的数据库和集合。

  • 要删除的索引的名称。

4
gcc -o delete-index delete-index.c $(pkg-config --libs --cflags libmongoc-1.0)
./delete-index

要使用 C++ 驱动程序删除 Atlas Search 索引,请在搜索索引视图上调用 drop_one() 方法。

1
2

以下示例应用程序在目标集合上使用 search_indexes() 方法来实例化搜索索引视图。然后,应用程序在视图上调用 drop_one() 方法,并将 Atlas Search 索引名称作为参数传递给该索引,以删除该索引。

#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
#include <mongocxx/search_index_view.hpp>
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;
}
3
  • Atlas 连接字符串。要了解更多信息,请参阅通过驱动程序连接

  • 您要检索索引的数据库和集合。

  • 要删除的索引的名称。

4
g++ -o delete-index delete-index.cpp $(pkg-config --cflags --libs libmongocxx)
./delete-index

要使用 .NET/C# 驱动程序删除 Atlas Search 索引,请使用 DropOne()DropOneAsync() 方法。

以下示例应用程序从集合中删除索引。指定以下值:

  • Atlas 连接字符串。要了解更多信息,请参阅通过驱动程序连接

  • 包含您要删除的搜索索引的数据库和集合。

  • 要删除的搜索索引的名称。

Program.cs
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 UI 查看索引状态

提示

API 文档

要使用Java 驱动程序删除集合上的 Atlas Search 索引,请使用 dropSearchIndex() 方法。您必须有 Java 驱动程序 v 4.11.0 或更高版本。

1
2

以下示例应用程序删除指定集合上的指定 Atlas Search 索引。

1import com.mongodb.client.MongoClient;
2import com.mongodb.client.MongoClients;
3import com.mongodb.client.MongoCollection;
4import com.mongodb.client.MongoDatabase;
5import org.bson.Document;
6
7public 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}
3
  • <connection-string> - Atlas 连接字符串。要了解更多信息,请参阅通过驱动程序连接

    注意

    在连接字符串中,不要包含 writeConcern 设置。

  • <database-name> — 包含该集合的数据库的名称。

  • <collection-name> — 要检索其索引的集合的名称。

  • <index-name> - 要删除的索引的名称。

4
javac DeleteIndex.java
java DeleteIndex

提示

另请参阅:

要通过节点驱动程序删除 Atlas Search 索引,请使用dropSearchIndex辅助方法。

您可以使用以下名为drop-index.js的示例应用程序来删除集合上的索引。 指定以下值:

  • Atlas 连接字符串。要了解更多信息,请参阅通过驱动程序连接

  • 在其中创建搜索索引的数据库和集合。

  • 要删除的索引的名称。

drop-index.js
// 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 UI 查看索引状态

要使用 Python 驱动程序删除 Atlas Search 索引,请在集合上调用 drop_search_index() 方法。

1
2

以下示例应用程序将 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>")
3
  • Atlas 连接字符串。要了解更多信息,请参阅通过驱动程序连接

  • 您要删除索引的数据库和集合。

  • 要删除的索引的名称。

4
python delete-index.py

后退

编辑