繁体   English   中英

在一个Elasticsearch HTTP请求(cURL)中删除多个索引

[英]Delete multiple indices in one Elasticsearch HTTP request (cURL)

我正在使用此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文档:

  • 删除索引API在正则表达式上没有说什么。

  • 多个指数说:

    它还支持通配符,例如: test**testte*t*test* ,以及“添加”( + )和“删除”( - )的功能,例如: +test*,-test3

  • 索引名称中的日期数学支持说:

    几乎所有具有index参数的API都支持index参数值中的日期数学。
    [...]
    date_format是应该呈现计算日期的可选格式。 默认为YYYY.MM.dd


我的问题:

  • 是否可以向Elasticsearch HTTP服务器发送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"
            }
        }
    }
}'

简短的回答

删除所有索引my_index-*除了索引my_index-*-*

curl -X DELETE http://es.example.com/my_index-*,-my_index-*-*

没有正则表达式

Elasticsearch 5.x不接受正则表达式或文件名模式?[az]选择多个索引。

但是, 多指数文档允许+-包含和排除索引。

用于防止意外删除索引的脚本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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM