ElasticSearch+Kibana+Logstash实现搜索

一: 环境准备

  1. 1: ElasticSearch+Kibana+Logstash+ik已经准备好请提取

          链接:https://pan.baidu.com/s/1G1If3uhYRlJ6X_7_V6u3nQ 
          提取码:lr79 

  1. 2: 创建数据库表并写入测试数据
CREATE TABLE `t_blog` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '表头',
  `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '姓名',
  `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '内容',
  `update_time` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

二:ElasticSearch问题点

1.启动: 点击elasticsearch.bat

2.在config/elasticsearch.yml中最后添加  xpack.ml.enabled: false,启动时闪退的话,使用cmd进行编译

3.访问地址: http://localhost:9200/

三:Kibana问题点

1.启动: 点击kibana.bat

2.启动时要先启动es,启动成功后,页面加载报错时,多刷新下

3.访问地址: http://localhost:5601/

4.写dsl语句时,用Dev Tools ,也可以用postman请求来玩玩

四:通过Logstash同步mysql数据问题点

1. 重点: 将mysql驱动放到logstash-7.4.2\logstash-core\lib\jars目录下,如果是在我上面环境准备中下载的logstash,已经将mysql驱动放在对应包里了,就不需要在添加了

2.配置jdbc.conf并放在一个任意目录下,运行logstash时执行对这个文件的绝对路径就好

input {
      stdin {
       }
      jdbc {
        # 连接的数据库地址和哪一个数据库,指定编码格式,禁用SSL协议,设定自动重连
        jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"
        jdbc_user => "root"
        jdbc_password => "root"
        # 自定义了数据库驱动包,建议使用绝对地址,我是将驱动包放在了Logstash核心包目录下了,所以这里就不用配置
       #jdbc_driver_library => "D:/software/es/logstash-7.4.2/mysql-connector-java-8.0.18.jar"
 
       jdbc_driver_class => "com.mysql.jdbc.Driver"
       jdbc_paging_enabled => "true"
       jdbc_page_size => "50000"
       codec => plain { charset => "UTF-8"}
 
       # 这是控制定时的,重复执行导入任务的时间间隔,第一位是分钟 不设置就是1分钟执行一次
       schedule => "* * * * *"
 
       # 情况上一次的记录
       clean_run => true
       #指定所需要执行的sql文件  ,这个地方可以直接写sql statement => "select * FROM t_blog WHERE update_time > :sql_last_value AND update_time < NOW() ORDER BY update_time desc" 
       #jdbc.sql文件可以任意目录存放,但是必须指定绝对路径
       statement_filepath => "D:/software/es/logstash-7.4.2/bin/jdbc.sql"      
     }
 }

output {

    elasticsearch {

        # 要导入到的Elasticsearch所在的主机

        hosts => "127.0.0.1:9200"

        # 要导入到的Elasticsearch的索引的名称

        index => "blog"

        # 主键名称(类似数据库主键)

        id => "%{id}"
    }
}

3.配置jdbc.sql

注意:jdbc.conf中指定对该文件路径,如果jdbc.conf中是直接写statement => 指定sql语句时,这里就不用jdbc.sql了


select * FROM t_blog WHERE update_time > :sql_last_value AND update_time < NOW() ORDER BY update_time desc

4.启动logstash同步数据

使用命令:logstash -f jdbc.conf

注意:我是将jdbc.conf放在logstash的bin目录下的,直接在bin目录用cmd执行命令

D:\software\es\logstash-7.4.2\bin>logstash -f jdbc.conf

5.如果没有报错基本就ok了,可以使用dsl语句查看自己同步的索引了

 

五:集成IK分词

  1. 1.到github下载elasticsearch的ik开源插件

         方案一: 在一的环境准备中直接下载配置好的elasticsearch-analysis-ik-7.4.1解压使用

          方案二:  https://github.com/medcl/elasticsearch-analysis-ik/releases   自己下载配置

  1. 2.在es的plugins下创建ik文件夹,并将elasticsearch-analysis-ik-7.4.1.zip解压到ik文件夹中,然后重启es

 

  1. 3.重启es问题

报上面问题是因为使用的ik分词没有指定对我们当前elasticsearch的版本

解决问题:

修改ik配置plugin-descriptor.properties中的版本

  1. 4.重启ok

 

  1. 5.分词演示

使用ik_smart 粗粒度分词


使用ik_max_word 细粒度分词

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值