ZPY博客

从数据库中同步数据到elasticsearch时富文本的问题

大家知道,用logstash-input-jdbc插件可以定时的从mysql中同步表的数据到elastsicsearch中,但是有一个问题,mysql中有些表中存的是富文本的数据,里面包含一些html标签,如果不做处理直接同步到elasticsearch中,搜索时就可以会搜索出html标签的那些看起来像乱码的数据。

所以我们必须要把内容中的html标签去掉之后再登到elasticsearch中。网上基本上这方面的有用信息很少,具体怎么做呢?那就是用logstash filter来做!添加如下filter即可。

filter {
    mutate {
        gsub => [
            # 将content字段用正则去掉html标签
            "content", "<.*?>|\\t|&nbsp;", ""
        ]
    }
}

mutate和gsub是将某个字段用指定的正则替换。正则表达式<.*?>|\\t|&nbsp;则是匹配所有html标签和\t和&nbsp;,将这几种替换为""后再登录到elasticsearch中。