ElasticSearch初学笔记(一)

本文详细介绍如何在SpringBoot项目中整合ElasticSearch,实现全文搜索功能。文章涵盖所需工具的安装配置,包括Elasticsearch、Kibana、Logstash等,及版本兼容性注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

基于SpringBoot的基础上希望做个全文搜索功能,默认SpringBoot方面知识已经掌握。

所需工具

刚使用ElasticSearch时,不知道都需要准备些什么,就在网上到处问,最终总结了需要安装一下工具。

  1. Elasticsearch ,由于使用SpringBoot整合,所以先要去看一下项目的maven依赖是整合那个版本的ES(spring-data-elasticsearch这个依赖里面是支持那个版本的ES);
  2. Elasticsearch-head-masterES资源管理可视化工具 ;
  3. Elasticsearch-analysis-ik 分词器;
  4. Kibana 开源的分析与可视化平台,用于和Elasticsearch一起使用的;
  5. Logstash 数据同步工具,在这是用于同步MySQL数据到ES;
  6. 重点:ES、IK分词器、Kibana、Logstash需要统一版本,否则可能出现兼容性错误。

工具安装

Elasticsearch

Elasticsearch 下载连接.

选择最新版本,获取历史版本(建议不要用最新的)
在这里插入图片描述
选择版本下载,我用的是6.5.4
在这里插入图片描述
在这里插入图片描述
下载完后直接解压使用

打开elasticsearch的config目录,编辑elasticsearch.yml文件
在这里插入图片描述
在尾行加上

http.cors.enabled: true 
http.cors.allow-origin: "*"
node.master: true
node.data: true

去掉http.port、network.host、node.name、cluster.name的注释,并修改network.host为 0.0.0.0

配置完成进入bin目录执行elasticsearch.bat文件
s在这里插入图片描述
运行成功后访问http://127.0.0.1:9200/.
看到版本信息,表示启动成功
在这里插入图片描述

Elasticsearch-head-maste

Elasticsearch-head-maste 下载连接.
下载git资源,解压
进入到cmd进入到Elasticsearch-head-maste解压后文件内,执行grunt server启动
在这里插入图片描述
启动成功后访问http://127.0.0.1:9100/.
在这里插入图片描述
看到这个表示启动成功。

Elasticsearch-analysis-ik

ik下载地址. 选择与Elasticsearch相同的版本
在ES的olugins目录下创建一个ik目录,把下载的ik压缩包内容解压到里面,像这样
在这里插入图片描述
ES默认分词器会将汉字的每个字拆分开来,使用ik分词器之后就会根据录入的词语进行分词,例如:
在这里插入图片描述

Kibana

Kibana下载地址.
和Elasticsearch一样,出自与elastic。下载相同的Kibana版本
进入Kibana的bin目录,双击开启kibana.bat,完事,效果如图
在这里插入图片描述
启动成功后进入http://localhost:5601.
在这里插入图片描述

Logstash日志收集工具(用户MqSQL到ES数据同步)

logstash下载. 选择与es、ik相同的版本
下载完成后再logsatsh的config目录下创建一个数据同步脚本的.conf文件(logstash-mysql-es.conf)
在这里插入图片描述
加入以下代码

input {
  jdbc {
    # mysql相关jdbc配置
    #自己的数据库连接信息
    jdbc_connection_string => "jdbc:mysql://localhost:3306/bugles?useUnicode=true&characterEncoding=utf-8&useSSL=false"
    jdbc_user => "root"
    jdbc_password => "510855262"

    # jdbc连接mysql驱动的文件目录,可去官网下载:https://dev.mysql.com/downloads/connector/j/
    #本地mysql连接驱动绝对路径
    jdbc_driver_library => "C:/java/Elasticsearch/logstash-6.5.4/config/mysql-connector-java-5.1.38.jar"
    # the name of the driver class for mysql
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_paging_enabled => true
    jdbc_page_size => "50000"

    jdbc_default_timezone =>"Asia/Shanghai"

    # mysql文件, 也可以直接写SQL语句在此处,如下:
    #需要执行sql语句冲数据库中查出的数据
    # statement => "select * from t_order where update_time >= :sql_last_value;"
    #也可以把sql写成.sql文件,然后这里是sql文件的绝对路径
    statement_filepath => "C:/java/Elasticsearch/logstash-6.5.4/config/room.sql"

    # 这里类似crontab,可以定制定时操作,比如每分钟执行一次同步(分 时 天 月 年)
    schedule => "* * * * *"
    #type => "jdbc"

    # 是否记录上次执行结果, 如果为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到 last_run_metadata_path 指定的文件中
    #record_last_run => true

    # 是否需要记录某个column 的值,如果record_last_run为真,可以自定义我们需要 track 的 column 名称,此时该参数就要为 true. 否则默认 track 的是 timestamp 的值.
    use_column_value => true

    # 如果 use_column_value 为真,需配置此参数. track 的数据库 column 名,该 column 必须是递增的. 一般是mysql主键
    tracking_column => "update_time"
    
    #tracking_column_type => "timestamp"

   # last_run_metadata_path => "./logstash_capital_bill_last_id"

    # 是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录
    clean_run => false

    #是否将 字段(column) 名称转小写
    lowercase_column_names => false
  }
}

output {
  elasticsearch {
  #本地es
    hosts => "127.0.0.1:9200"
    #es的索引名
    index => "bugles_room_type"
    #es数据id,建议与mysql中的唯一主键相对应
    document_id => "%{type_code}"
    template_overwrite => true
  }

  # 这里输出调试,正式运行时可以注释掉
  #stdout {
  #    codec => json_lines
  #} 
}

编写完之后,进入logstash的bin目录
执行logstash -f …/config/logstash-mysql-es.conf执行数据同步
在这里插入图片描述
这样子就是同步成功了。

代码具体实现请见写一篇SpringBoot整合ElasticSearch实现简单的全文搜索(个人版——代码实现)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值