安装
Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到存储库(ES)中
首先安装下java环境:
sudo apt-get update
sudo apt-get install openjdk-8-jre openjdk-8-jdk
java -version
//有输出版本表示安装ok
安装,然后启动
bin/logstash -e 'input { stdin {} } output { stdout {} }'
-e是命令行中指定配置,这句话意思是从标准输入获取输入,输出到标准输出
输入helloworld测试下:
同步MySQL数据
测试正常后需要用logstash链接mysql,首先需要将musql-connector的jar包复制到/usr/local/logstash/logstash-7.4.2/logstash-core/lib/jars
jdbc.conf
jdbc.sql
暂时无法在飞书文档外展示此内容
root@ozy-linux:/usr/local/logstash/logstash-7.4.2/logstash-core/lib/jars# cp /home/ozy/Downloads/mysql-connector-java-8.0.18.jar ./
修改下jdbc.conf:
修改数据库密码,可以看到schedule项设置每分钟更新
jdbc.sql内容如下:
SELECT
goods_id goodsId,
goods_name goodsName,
market_price marketPrice,
original_img originalImg
FROM
t_goods
使用以下命令检查配置文件是否ok:
bin/logstash -f /usr/local/logstash//logstash-7.4.2/jdbc.conf -t
输出配置ok则正常
curl -X PUT http://localhost:9200/shop -H 'Content-Type:application/json' -d'{ "settings": { "number_of_shards": 5, "number_of_replicas": 1 } }'
解决Unassigned问题
先查看有哪些未分配:
curl -XGET localhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason| grep UNASSIGNED
可以看到,自己建的三个索引没有都有五个未分配的片,所以考虑减少副本数:
curl -XPUT 'localhost:9200/test/_settings' -d '{"number_of_replicas": 1}'
curl -XPUT 'localhost:9200/c' -d '{"number_of_replicas": 1}'
没用,经过多次尝试后,再每个node的yml文件加入如下参数:
# 磁盘高水位分片
cluster.routing.allocation.disk.threshold_enabled: false
真难崩
创建索引库
新建索引库shop,然后设置分词,记得使用head页面直接请求:
http://192.168.2.151:9200/shop/_mapping/
{
"properties": {
"goodsName": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
}
}
}
启动数据库:
sudo service mysql start
执行导入
cd /usr/local/logstash/logstash-7.4.2/
sudo bin/logstash -f /usr/local/logstash/logstash-7.4.2/jdbc.conf
会显示数据导入过程,测试:
正常没问题
服务器配置终于结束了。。。。。。。。
很好的debug,解决了我遇到的很多问题
Pingback:tadalafil 20 mg para que sirve