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命令或驾驶员辅助方法删除所有Atlas 集群层上的Atlas Search索引。

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


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


要通过API删除 Atlas Search 索引:

1

使用要删除的 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 删除一个端点。

2

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

atlas clusters search indexes delete <indexId> [options]

要了解有关命令语法和参数的更多信息,请参阅有关atlas clusters searchindexes delete 的 Atlas CLI 文档。

提示

请参阅:相关链接

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

atlas deployments search indexes delete <indexId> [options]

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

提示

请参阅:相关链接

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

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

  3. 如果 Clusters(数据库部署)页面尚未出现,请单击侧边栏中的 Database(数据库)。

    此时会显示“集群”页面。

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>")

defaultmovies以下命令从collection中删除名为 的搜索索引:

db.movies.dropSearchIndex("default")

注意

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

要使用C 驱动程序删除 Atlas Search 索引,请将您的集合和删除命令传递给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 用户界面查看索引状态。

提示

API 文档

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

1
2

以下样本应用程序删除指定collection上的指定 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 用户界面查看索引状态。

要使用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

后退

编辑