我使用这个curl
命令行来清理我的索引:
curl -XDELETE http://example.com/my_index-*
但是,现在,我想删除my_index-.*[.][0-3][0-9]
:
my_index-YYYY.MM.dd
my_index-YYYY.MM.dd-*
我找到的相关Elasticsearch文档:
Delete index API对正则表达式没有任何说明。
它还支持通配符,例如:
test*
或*test
或te*t
或*test*
,以及"添加" (+
)和"删除" (-
),例如:+test*,-test3
。
Date math support in index names说:
几乎所有具有
index
参数的API都支持index
参数值中的日期数学。
[...]
date_format
是可选格式,应在其中呈现计算日期。默认为YYYY.MM.dd
。
我的问题:
DELETE
请求方法,以删除格式为my_index-YYYY.MM.dd
的索引? my_index-*
但保留my_index-*-*
? 例如,有时可以在POST
数据中提供正则表达式:
curl -XPOST http://example.com/my_index-2017.07.14/_search?pretty' -H 'Content-Type: application/json' -d'
{
"suggest": {
"song-suggest" : {
"regex" : "n[ever|i]r",
"completion" : {
"field" : "suggest"
}
}
}
}'
答案 0 :(得分:14)
删除索引my_index-*
my_index-*-*
curl -X DELETE http://es.example.com/my_index-*,-my_index-*-*
Elasticsearch 5.x不接受正则表达式或文件名模式?[a-z]
来选择多个索引。
但是,multiple indices文档允许+
和-
包含和排除索引。
防止意外删除索引my_index-*-*
的脚本:
#!/bin/bash -xe
pattern="${1:-*}"
curl -X DELETE https://es.example.com/my_index-"$pattern",-my_index-*-*?pretty
index
可以包含逗号分隔的索引模式列表,例如my_index_1,my_index_2,my_index_3
。my_index*
。+
和-
作为索引前缀,例如my_index_*,-my_index_2017*,+my_index_2017-01*,-my_index_2017-01-31
。+
此DELETE
请求会删除my_index_*
my_index_2017-01-31
index_list='my_index_*,-my_index_2017*,+my_index_2017-01*,-my_index_2017-01-31'
curl -X DELETE http://es.example.com/"$index_list"
my_index_*
my_index_2017*
my_index_2017-01*
my_index_2017-01-31