问: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$'