一、删除单个索引
在elasticsearch中删除一个单独的索引非常简单。只需在delete API中指定索引名称即可。如下所示:
DELETE /index_name
您也可以使用一些其他参数,来指定要删除的索引类型:
DELETE /index_name/type_name
如果您不确定索引是否存在,您可以使用以下命令判断索引是否存在:
HEAD /index_name
如果索引存在,您将获得正确的响应码。如果不存在,您将获得404响应码。
二、删除多个索引
要同时删除多个索引,您可以使用_delete_by_query API。此API可用于根据查询条件删除多个文档和索引。
例如,要删除所有名称以“test”开头的索引,您可以执行以下请求:
POST /_delete_by_query
{
"query": {
"wildcard": {
"_index": "test*"
}
}
}
三、定时删除索引
您可以在elasticsearch中创建定期删除索引的作业,以放置索引可能在过多时间上增大的问题。您可以使用curator,它是面向elasticsearch的Python库,可帮助管理索引。
创建一个新的Curator作业,以删除所有最近7天的索引。以下是curator.yml配置文件中的一些示例配置:
---
#在配置块中定义作业
actions:
1:
action: delete_indices
description: >-
Delete indices older than 7 days.
options:
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern
kind: prefix
value: logstash-
- filtertype: age
source: name
direction: older
timestring: '%Y.%m.%d'
unit: days
unit_count: 7
四、删除所有索引
虽然不建议删除所有索引,但在某些情况下,这可能是必要的。以下命令可以删除所有索引:
DELETE /_all
五、删除索引前进行确认
您可以通过在删除索引之前进行确认来限制意外的删除。要启用此功能,请在elasticsearch.yml文件中设置以下配置:
action.destructive_requires_name: true
如果您尝试删除索引时未指定名称,则会得到以下错误:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "[_all] DELETE with query params is not allowed unless concrete indices are specified"
}
],
"type": "illegal_argument_exception",
"reason": "[_all] DELETE with query params is not allowed unless concrete indices are specified"
},
"status": 400
}
六、删除索引时保留快照
如果要删除一个索引,但是想保留它的快照,则可以使用以下命令。这个命令会将一个快照保存在_elastic_search快照仓库中:
DELETE /index_name?snapshot=true&repository=snapshot_repository
七、删除索引时保留别名
如果要删除一个索引但想保留它的别名,则可以使用以下命令:
POST /_aliases
{
"actions" : [
{ "remove" : { "index" : "index_to_delete", "alias" : "alias_name" } }
]
}
总结
这篇文章详细介绍了elasticsearch中删除索引的各种方法,包括删除单个索引、删除多个索引、定时删除索引、删除所有索引等。我们还介绍了如何在删除索引之前进行确认,如何保留快照和别名。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/277408.html
微信扫一扫
支付宝扫一扫