Elasticsearch
时下最快速的查询插件,是一个基于no-sql数据库的,使用倒排索引的方法的快速查询。
倒排索引
1.正排索引: 在存储时存储内容 通过key 查询数据 ,如用于搜索功能 数据庞大 明显不适合
2.倒排索引: 在存储时,将内容分词,根据词的热度等条件 ,排序,只需比对对应的词就能拿得到所有包含这个词的记录 的地址,返回
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FKf1dYXD-1574773952409)(C:\Users\ad\AppData\Roaming\Typora\typora-user-images\1574729998314.png)]
安装ik 分词器
es默认是英语的 按照空格以及标点符号分词,中文需要通过中文分词器来分词
安装到es 目录的 plugins文件下创建ik目录 解压即可
Elasticsearch 导入 MySQL 数据
Logstash
Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,
然后将数据发送到 “存储库” 中。(我们的存储库当然是 Elasticsearch。)
配置Logstash
-
导入数据库驱动jar包到目录下
-
配置jdbc.conf
input {
stdin {
}
jdbc {
# 数据库地址 端口 数据库名
jdbc_connection_string => "jdbc:mysql://localhost:3306/ego"
# 数据库用户名
jdbc_user => "root"
# 数据库密码
jdbc_password => "root"
# mysql java 驱动地址
jdbc_driver_library => "D:/dubbo/elasticsearch-2.4.5/logstash-5.3.2/logstash-5.3.2/mysql-connector-java-5.1.8.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
# sql 语句文件
statement_filepath => "D:/dubbo/elasticsearch-2.4.5/logstash-5.3.2/logstash-5.3.2/jdbc.sql"
# 定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule => "* * * * *"
# 是否将 column 名称转小写
lowercase_column_names => false
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
# index 名称
index => "ego"
# type 名称
document_type => "goods"
# 文档_id,%{goods_id}意思是取查询出来的 goods_id 的值,并将其映射到 es 的_id 字段中
# 文档_id,%{goodsId}如果是别名,意思是取查询出来的 goodsId 的值,并将其映射到 es 的_id 字段中
document_id => "%{goodsId}"
}
stdout {
codec => json_lines
}
}
3.配置jdbc.sql
SELECT
goods_id goodsId,
goods_name goodsName,
market_price marketPrice,
original_img originalImg
FROM
t_goods
运行logstash.bat
在cmd环境中运行:logstash.bat -f ***(jdbc.conf 路径) -t (存在-t可检查文件是否正确 去除-t直接运行)
运行logstash.bat
在cmd环境中运行:logstash.bat -f ***(jdbc.conf 路径) -t (存在-t可检查文件是否正确 去除-t直接运行)
会将查询的结果直接添加到es数据库中