Elasticsearch简介,windows下安装elasticsearch、ik分词器及图形化界面kibana、logstash mysql数据表同步到elasticsearch

Elasticsearch简介

Elasticsearch是基于lucene使用java编写的一种开源搜索引擎。Lucene采用倒排索引对文档的内容进行关键词分词,每个关键词对应多个文档出现具体位置信息,后期查询的时候直接通过分词定位到相关的文档信息。在底层采用了分段的存储模式,使它在读写时几乎完全避免了锁的出现,大大提升了读写性能。
默认情况下Elasticsearch对中文分词不是很友好,可以采用第三方ik分词器或者自定义热词。

1.下载

官网下载:https://www.elastic.co/downloads/elasticsearch

2.安装

  • 解压zip文件到你需要安装的目录下。eg:D:\elasticsearch-7.3.2
  • 双击 bin/elasticsearch.bat 启动
    • 启动闪退:
      • 未安装正确版本的jdk64位,按官网要求需要安装jdk1.8及以上版本
      • jdk环境变量配置有误:
        原JAVA_HOME: “C:\Program Files\Java”
        修改后:C:\Program Files\Java\jdk1.8.0_152
        在这里插入图片描述
  • 浏览器访问http://localhost:9200/, 响应如下
{
  "name" : "DESKTOP-2IKQ1OU",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "XRjUcn5vRmWg3pmQvr5iJA",
  "version" : {
    "number" : "7.3.2",
    "build_flavor" : "default",
    "build_type" : "zip",
    "build_hash" : "1c1faf1",
    "build_date" : "2019-09-06T14:40:30.409026Z",
    "build_snapshot" : false,
    "lucene_version" : "8.1.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

3.安装ik分词器

下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

一定要安装和elasticsearch一样版本号的插件,否则会启动失败

  • 在elasticsearch安装目录的plugins目录下创建ik文件夹
  • 复制下载好的zip文件到ik并解压到当前文件夹
  • 重新运行bin\elasticsearch.bat重启,ik安装完成

下载安装kibana

下载地址:https://www.elastic.co/downloads/kibana
elasticsearch版本保持一致

  • 解压zip 修改config/kibana.yml配置 文件:将【server.port】【elasticsearch.hosts】注释放开
  • 双机bin/kibana.bat启动
  • 浏览器访问地址: http://localhost:5601

logstash mysql 同步到 elasticsearch

1、下载logstash (与elasticsearch版本保持一致)

地址: https://www.elastic.co/cn/downloads/logstash

2、下载: mysql-connector-java.jar (与数据库版本保持一致)

在logstash目录下创建一个mysql目录,把驱动文件放进去。
  在这里插入图片描述

3、在logstash目录下config创建配置文件mysql.conf。配置如下:

input {
	# 多张表的同步只需要设置多个jdbc的模块就行了
  jdbc {
    jdbc_driver_library => "D:/es7.0.0/logstash-7.0.0/mysql/mysql-connector-java-5.1.46.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/hs?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"
    jdbc_user => "root"
    jdbc_password => "root"
    schedule => "* * * * *"
    statement => "SELECT * FROM user WHERE update_time >= :sql_last_value"
    use_column_value => true
    tracking_column_type => "timestamp"
    tracking_column => "update_time"
    last_run_metadata_path => "D:/es7.0.0/logstash-7.0.0/mysql/syncpoint_table.sql"
  }
}


output {
    elasticsearch {
        # ES的IP地址及端口
        hosts => ["127.0.0.1:9200"]
        # 索引名称 可自定义
        index => "user"
        # 需要关联的数据库中有有一个id字段,对应类型中的id
        document_id => "%{id}"
        document_type => "user"
    }
    stdout {
        # JSON格式输出
        codec => json_lines
    }
}

配置文件说明

jdbc_driver_library: jdbc mysql 驱动的路径,在上一步中已经下载
jdbc_driver_class: 驱动类的名字,mysql 填 com.mysql.jdbc.Driver 就好了
jdbc_connection_string: mysql 地址
jdbc_user: mysql 用户
jdbc_password: mysql 密码
schedule: 执行 sql 时机,类似 crontab 的调度
statement: 要执行的 sql,以“:”开头是定义的变量,可以通过 parameters 来设置变量,这里的 sql_last_value 是内置的变量,表示上一次 sql 执行中 update_time 的值,这里 update_time 条件是>= 因为时间有可能相等,没有等号可能会漏掉一些增量
use_column_value: 使用递增列的值
tracking_column_type: 递增字段的类型,numeric 表示数值类型, timestamp 表示时间戳类型
tracking_column: 递增字段的名称,这里使用 update_time 这一列,这列的类型是 timestamp
last_run_metadata_path: 同步点文件,这个文件记录了上次的同步点,重启时会读取这个文件,这个文件可以手动修改

schedule=> crontab :https://tool.lu/crontab/
注意:Crontab表达式以分为单位

4、配置好后,打开cmd窗口,敲入启动命令:bin\logstash.bat -f config\mysql.conf 如下图所示:
在这里插入图片描述
5、用kibana查看:
在这里插入图片描述

6、多文件方式同步ES数据
一个 logstash 实例可以借助 pipelines 机制同步多个表,只需要写多个mysql.conf配置文件就可以了,假设我们有两个表 table1 和 table2,对应两个配置文件 mysql_table1.conf 和 mysql_table2.conf。在 config/pipelines.yml 中配置:

- pipeline.id: table1
  path.config: "config/ mysql_table1.conf"
- pipeline.id: table2
  path.config: "config/mysql_table2.conf"

打开cmd:输入【bin\logstash.bat】启动logstash

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值