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

编辑

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

编辑

答:可以!

编辑

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

问题

编辑

非法字符使得删除索引变得困难。

% 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$'