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

  • A+
所属分类:全文检索

大家知道,用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中。

ZPY

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: