问:Curator 能否处理包含奇怪字符的索引名称?

编辑

问:Curator 能否处理包含奇怪字符的索引名称?编辑

答:可以!编辑

这个问题可以通过使用 模式过滤器类型 来解决,将 类型 设置为 regex,并将 设置为所需的正则表达式。

问题:编辑

非法字符导致难以删除索引。

% curl logs.example.com:9200/_cat/indices
red    }?ebc-2015.04.08.03
                          sip-request{ 5 1         0  0     632b     316b
red    }?ebc-2015.04.08.03
                          sip-response 5 1         0  0     474b     237b
red    ?ebc-2015.04.08.02
                         sip-request{ 5 1         0  0     474b     316b
red
eb                               5 1         0  0     632b     316b
red    ?e                                5 1         0  0     632b     316b

 

您可以看到,似乎有一些制表符,也许还有换行符。这使得使用 HTTP API 删除索引变得很困难。

导出所有索引设置

curl -XGET localhost:9200/*/_settings?pretty

 

…​ 会显示索引名称作为结果 JSON 中的第一个键。在这种情况下,名称非常不典型。

}\b?\u0011ebc-2015.04.08.02\u000Bsip-request{
}\u0006?\u0011ebc-2015.04.08.03\u000Bsip-request{
}\u0003?\u0011ebc-2015.04.08.03\fsip-response
...

 

Curator 允许您使用正则表达式来选择要对其执行操作的索引。

在尝试执行操作之前,请先使用 --dry-run 标志查看将受到影响的内容。

要删除上述示例中的前三个索引,请使用 '.*sip.*' 作为正则表达式。

操作文件 中,正则表达式和 strftime 日期字符串 *必须* 用单引号括起来。

下一个索引比较棘手。索引的真实名称是 \n\u0011eb。正则表达式 .*b$ 不起作用,但 '\n.*' 可以。

最后一个索引可以使用正则表达式 '.*e$' 删除。

最终的 操作文件 可能如下所示:

actions:
  1:
    description: Delete indices with strange characters that match regex '.*sip.*'
    action: delete_indices
    options:
      continue_if_exception: False
      disable_action: False
    filters:
    - filtertype: pattern
      kind: regex
      value: '.*sip.*'
  2:
    description: Delete indices with strange characters that match regex '\n.*'
    action: delete_indices
    options:
      continue_if_exception: False
      disable_action: False
    filters:
    - filtertype: pattern
      kind: regex
      value: '\n.*'
  3:
    description: Delete indices with strange characters that match regex '.*e$'
    action: delete_indices
    options:
      continue_if_exception: False
      disable_action: False
    filters:
    - filtertype: pattern
      kind: regex
      value: '.*e$'