Logstash 5.1如何移除输入中的HTML标记?是否有内置过滤器?
Hey,针对你在Logstash 5.1版本处理带嵌套HTML标签文本的问题,我来给你梳理下可行的解决方案:
解决Logstash移除HTML标签的问题
1. 用内置过滤器就能搞定,不用自己开发复杂逻辑
Logstash自带的mutate过滤器里的gsub功能,完全可以处理单个或嵌套的HTML标签,不需要额外开发插件。
具体配置示例
在你的Logstash配置文件中,添加如下filter块即可:
filter { mutate { gsub => [ # 替换成你实际要处理的字段名,比如"message"或者自定义字段 "target_field", "<[^>]+>", "" ] } }
这里的正则<[^>]+>会匹配所有以<开头、>结尾的HTML标签(不管嵌套多少层),然后用空字符串替换,直接剥离所有标签,只保留纯文本内容。比如你提到的<p><b><strong> XYZ </strong></b></p>,处理后会变成XYZ,完全符合需求。
2. 不需要自行编写嵌套正则
你不用纠结嵌套标签的复杂正则逻辑,上面的<[^>]+>已经足够覆盖绝大多数场景——它的逻辑是匹配<之后到第一个>之间的所有内容,不管标签里嵌套了多少层级,都会被逐个匹配并移除,简单高效。
3. 5.1之前的版本同样支持
放心,mutate过滤器的gsub功能在Logstash 2.x及更早的版本就已经存在了,所以5.1之前的版本也可以用这个方法来移除HTML标签,没有版本限制。
额外小提示
如果你的字段里还包含HTML实体(比如<、>这类转义字符),可以再补充gsub规则来处理:
gsub => [ "target_field", "<", "<", "target_field", ">", ">", "target_field", "&", "&" ]
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

