通过logstash实现mysql同步elasticsearch实现全文检索

编程

目的:文本型数据无法实现关键字查询,某个汉字查询,思路: 实现将mysql某表中 id(mysql某张表中的主键)和content内容同步到elasticsearch ,利用elasticsearch倒排序特性,分词器,对content进行建立索引,通过分词在该elasticsearch查到记录,然后获得该记录的id,并通过该id进入mysql中通过该id(主键)去查询记录。提升查询速度。

(1) 自定义动态模板,在elasticsearch安装目录下新建templates目录(注意,elasticsearch下自定义模板,必须建这个目录)

如下,所有以所有test开头的 都会默认走这个模板配置,release_date指定date类型,des指定text,text类型默认是会分词的,将改des里的字符(汉字)按照默认分词器进行分词(倒排序,建索引的过程)

(2)启动elasticsearch, ./bin/elasticsearch

(3)实现mysql同步到elasticsearch,必须要借助logstash-input-jdbc插件(插件安装省略,logstash7.0默认已自带该插件)

(4)新建logstash配置文件 vi  logstatic-test.sh

注意点:如果出现“LogStash::ConfigurationError  com.mysql.jdbc.Driver not loaded. Are you sure you"ve included the correct jdbc driver in :jdbc_driver_library?”错误,可能jdbc_driver_library路径不对,也可能mysql-connector-java.jar 和当前环境不兼容,我在操作过程中,就出现该问题

jdk1.8  LogStash7.1.1    elastisearch 7.1 我刚开始用的mysql-connector-java.5.1.4.jar 就出现以上错误,我修改为mysql-connector-java-6.0.6.jar 才解决掉

(5)启动logstash  ./bin/logstash -f ./config/logstash-test.conf

以下是数据同步的过程日志,/logstash7.1.1/logs/logstash-plain.log

(6)借助elasticsearch-head 进行查看  进入elasticsearch-head 安装目录下并启动  npm run start

http://xxx.xxx.xxx.xxx:9100

  

验证查询des、title 是否分词可以查到

分词有时候会把词分成多个字进行查询  例如 “稳伦”,会分为“稳” “稳伦” “伦”等,具体怎么分,和用的分词器有关(具体分词器如何安装、指定、使用此处不做详解,可自行百度)

以上是 通过logstash实现mysql同步elasticsearch实现全文检索 的全部内容, 来源链接: utcz.com/z/512722.html

回到顶部