一:概述

Elasticsearch:是一个开源的高扩展的分布式全文搜索引擎,它可以近乎实时的存储,然后检索数据,延迟很小。

Logstash: 实现将mysql或其他数据库的数据定时采集到Elasticsearch里。

ElasticHD:Elasticsearch的可视化工具,可以在界面条件查询查询Elasticsearch里的数据。

二:Elasticsearch安装部署

注意:因为ES是java开发的,所以需要安装jdk,安装完之后要配置环境变量,这个就不再赘述了,不会的可以从网上搜索怎么配置

1. 下载elasticsearch安装包(也可以自己去es官网下载):

2. 解压安装包到指定目录,我的目录是:D:\tool\elasticsearch-7.16.2

logstash java日志多行输出 logstash java api_bc

3. 进入bin目录,打开命令行(ps:在地址栏直接输入cmd,敲回车,就会在当前目录打开一个命令行窗口)

logstash java日志多行输出 logstash java api_elasticsearch_02

 4. 在命令行输入:elasticsearch-service.bat install  把ES安装为服务

logstash java日志多行输出 logstash java api_java_03

5. 启动 elasticsearch

方法一:进入bin目录,双击 elasticsearch.bat 启动该应用

方法二: 打开任务管理器,在服务栏里查看ES是否启动,没有启动,就启动

logstash java日志多行输出 logstash java api_java_04

6. 直接访问 http://localhost:9200/ ,浏览器出现如下所示,表明成功

logstash java日志多行输出 logstash java api_elasticsearch_05

 补充:  如果启动后报jdk相关的错(原因:es默认先使用本地jdk, 当本地jdk与其需要的版本不匹配则会报错;解决思路就是 让es使用自己自带的jdk,这样就需要修改配置文件,让其指向自己自带的jdk),则按如下方式解决:

步骤一:在系统环境变量里添加:

ES_HOME:     D:\tool\elasticsearch-7.16.2\

ES_PATH_CONF:    D:\tool\elasticsearch-7.16.2\config    

JAVA_HOME:   D:\tool\elasticsearch-7.16.2\jdk

步骤二:按照如上配置后,bin目录下的elasticsearch-env.bat配置文件就会按照设置的目录去调用自带的jdk, 此时重新启动 elasticsearch即可。

三:Logstash安装部署

1. 下载Logstash安装包(也可以自己去es官网下载): 

2. 将安装包解压到指定目录下,我的在:D:\tool\logstash-7.16.2

3. 进入到bin目录下,将 连接mysql数据库的驱动包(mysql-connector-java-5.1.39.jar) 放到该目录下

下载链接:


4. 编写采集数据的sql, 并保存到 test.sql文件里,将test.sql文件放到新建的sqldir里,即  bin/sqldir/ test.sql

我test.sql里的内容是: select * from user

5. 修改bin目录下,logstash.conf 配置文件内容:

input{
  stdin {}
   jdbc{
    type => "jdbc"
    # mysql 数据库的连接信息
    jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/elasticsearch_view?  characterEncoding=UTF-8&autoReconnect=true&useTimezone=true&serverTimezone=UTC"
    jdbc_user => "root"
    jdbc_password => "ABCabc123"
    jdbc_driver_library => "./mysql-connector-java-5.1.39.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver" 
    # 数据库重连尝试次数
    connection_retry_attempts => "3"
    # 判断数据库连接是否可用,默认false不开启
    jdbc_validate_connection => "true"
    # 数据库连接可用校验超时时间,默认3600S
    jdbc_validation_timeout => "3600"
    # 开启分页查询(默认false不开启);
    jdbc_paging_enabled => "true"
    # 单次分页查询条数(默认100000,若字段较多且更新频率较高,建议调低此值);
    jdbc_page_size => "2"    # 执行的sql 文件路径,如果sql较简单则用statement属性直接写sql语句即可
    statement_filepath => "./sqldir/test.sql"   #statement=>"select * from user"
   # 是否将字段名转换为小写,默认true(如果有数据序列化、反序列化需求,建议改为false);
    lowercase_column_names => false  # 是否记录上次执行结果,true表示会将上次执行结果的tracking_column字段的值保存到last_run_metadata_path指定的文件中;
    record_last_run => true         # 需要记录查询结果某字段的值时,此 字段为true,否则默认tracking_column为timestamp的值;:sql_last_value如果input里面use_column_value=>true,即如果设置为true的话,可以是我们设定的字段的上一次的值
    #默认 use_column_value=>false,这样: sql_last_value为上一次更新的最后时刻值,也就是说对于新增的值,才会更新,这样就实现了增量更新的目的
use_column_value=>true
    # 需要记录的字段,用于增量同步,需要是数据库里的字段
    tracking_column =>"id"    #查询结果某字段的数据类型,仅包括numeric和timestamp,默认为numeric
    tracking_column_type=>"numeric"
    #记录上次执行结果数据的存放位置
last_run_metadata_path=>"./iweb_file_view.log"
   #是否清除last_run_metadata_path的记录,需要增量同步时此字段必须为false
clean_run=>false
  #同步频率(分 时 天 月 年),默认每分钟同步一次
  schedule=>"* * * * * *"
    }
 }filter{
     mutate{
          remove_field=>["@timestamp","@version"]
     }
}
output {
  if [type] == "jdbc" {
  elasticsearch {
     hosts => "127.0.0.1:9200"
    # 配置ES集群地址
    # hosts => ["192.168.1.1:9200", "192.168.1.2:9200", "192.168.1.3:9200"]
    # 索引名字,必须小写,一个索引下只能有一个类型
    index => "iweb_file"
    # 数据唯一索引(建议使用数据库KeyID)
    document_id => "%{id}"    document_type=>"file_type"
   }
  }
    stdout {
       codec => json_lines
    }
  }

6. 用记事本编写logstash的启动脚本,并存为: my_run.bat 文件

我  my_run.bat里的内容是: logstash -f logstash.conf

7. 在确保elasticsearch已经启动成功的前提下,启动 logstash(否则无法将数据写入elasticsearch):  双击 my_run.bat 即可,如下图则说明logstash启动成功,并成功连接上了elasticsearch 

logstash java日志多行输出 logstash java api_java_06

四:Elasticsearch可视化工具安装使用(ElasticHD、Kibana)

1. 下载 ElasticHD 安装包:

2. 解压 安装包到 D:\tool\ElasticHD

3. 在elasticsearch已经启动的前提下,双击ElasticHD/run.bat,启动该可视化工具

logstash java日志多行输出 logstash java api_logstash java日志多行输出_07

4. 启动后直接浏览器访问: http://127.0.0.1:9800,即可看到可视化界面,在连接里配置已启动的elasticsearch的访问地址即可查看里面的存储的数据

logstash java日志多行输出 logstash java api_java_08

五:Java如何调用Elasticsearch(连接、查询、分页、排序、统计、模糊匹配、精准匹配、文字高亮)

我的完整demo:

logstash java日志多行输出 logstash java api_开发语言_09

结束!