废话不多说,直接来硬的!我在使用的时候使用的是mysql数据库。
一、ElasticSearch概念和使用场景
1.当我们需要搜索海量数据的时候,就可能会用到。以下使用的场景有哪些呢?
- 搜索海量数据
- 分布式(单点、或多节点使用)
- 全文检索
- 实时快速
- Restful
2.默认端口9200和9300,安装后默认试用双端口下面说区别:
- 9200 端口是ES节点与外部通讯使用的端口。它是http协议的RESTful接口(各种CRUD操作都是走的该端口,如查询:http://localhost:9200/testes/_search)。
- 9300端口是ES节点之间通讯使用的端口。它是tcp通讯端口,集群间和TCPclient都走的它。(java程序中使用ES时,在配置文件中要配置该端口)
3.安装方式elastic官网下载,解压文件夹,点击bin文件夹中的elasticsearch.bat文件
4.中文分词插件
- standard
- simple
- whitespace:
- lauguage
- ik(全拼:elasticsearch-analysis-ik,重点说这个,主要是分词效果比较好)
ik分词器下载地址:https://github.com/medcl/elasticsearch-analysis-ik/tags 版本对应es版本,下载后在解压目录下创建plugins文件夹解压放置 如:D:elasticsearchelasticsearch-6.3.2plugins
ik中有两种分词方式:ik_smart 和 ik_max_word ,相比较而言ik_max_word分词更好!
ik_max_word:
2.ik_smart
二、数据同步工具logstash(elastic官网工具)
简单的说就是利用logstash把数据从mysql同步到es,然后根据业务场景直接从es中查询数据。
开源中间件常见哪些:阿里的mysql-binlog / siddontang / go-mysql-elasticsearch,下面重点说logstash。
- logstash
1.解决哪些问题?
数据同步(全量,增量)
全量:第一次建立后全量同步到es
增量:新增、修改老数据、删除老数据
2.下载地址:elastic官网(对应版本)
3.配置方式
1.把mysql-connector-java.jar文件放进根目录下
2.在安装目录下config文件夹中添加mysql.conf文件。配置如下:
1 input{ 2 jdbc { 3 jdbc_driver_library => "D:\logstash-6.3.2\logstash-6.3.2\mysql-connector-java-5.1.8.jar" 4 jdbc_driver_class => "com.mysql.jdbc.Driver" 5 jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/testes" //此处的testes为创建的索引名称 6 jdbc_user => "testes" //mysql username 7 jdbc_password => "testes" //mysql密码 8 schedule => "* * * * *" 9 clean_run => true 10 statement => "select * from t_blog where update_time > :sql_last_value and update_time < now() order by update_time desc" //此处的sql为同步的sql 11 } 12 } 13 14 output { 15 elasticsearch { 16 hosts => ["127.0.0.1:9200"] 17 index => "testes" //索引名称 18 document_id => "%{id}" //此处不用替换,id默认指的就是表中的id 19 } 20 #stdout { 21 #codec => json_lines 22 #} 23 }
3.在安装目录下bin文件夹下执行cmd命令:
logstash -f ../config/mysql.conf
三、kibana工具(elastic官网工具)
用途查询数据,以及数据可视化分析。(同样也可用postman)
下载地址:elastic官网
使用方法:直接解压,执行目录下bin文件夹kibana.bat文件。默认端口为5601,直接在浏览器输入:localhost:5601
四、检验是否成功
1.首先执行elasticSearch.bat文件,然后执行logstash和kibana.
2.在kibana页面执行
POST /testes/_search
{
}
既成功!!!