工作需要有辛在windows 环境下操作了一次es,在此我记录了一下es 搭建以及数据全量同步的过程。
准备安装包:
- Elasticsearch本体安装包
- Head插件
- Ik分词器
-
Logstash数据同步插件
安装包版本必须一致。
安装环境准备:
node和grunt安装
1.从地址:https://nodejs.org/en/download/ 下载相应系统的msi,双击安装node。
2.安装完成用cmd进入安装目录执行 node -v可查看版本号。
3.执行 npm install -g grunt-cli 安装grunt ,安装完成后执行grunt -version查看是否安装成功,会显示安装的版本号。
4.注:在安装node时出现
run npm audit fix
to fix them, or npm audit
for details.错误时,
依次执行下面的命令即可。
npm audit fix
npm audit fix --force
npm audit
ES安装
ES本体安装
解压本体安装包,进入config目录,修改elaticsearch.yml,在文档末尾加入。
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
并且去掉 network.host: 192.168.0.1的注释并改为network.host: 0.0.0.0,去掉 cluster.name;node.name;http.port的注释。
修改 jvm.options 文件
# Xms Xmx 内存大小
-Xms256m
-Xmx256m
#-Dfile.encoding=UTF-8 utf-8会导致 控制台中文乱码
-Dfile.encoding=GBK
ES本体安装完成。 bin 目录 elasticsearch.bat 启动。
Head插件安装
解压插件安装包,修改Gruntfile.js
connect: {
server: {
options: {
#加入hosatname
hostname: '*',
port: 9100,
base: '.',
keepalive: true
}
}
}
cmd 目录下 npm install 安装head,然后npm run start 运行head插件。
ik安装
将安装包解压后,更名为iK,并且复制到Elasticsearch的解压目录下即可。
此时ESwindows下搭建已经完成。
打开浏览器访问:http://127.0.0.1:9100。
mysql 数据全量同步。
解压Logstash插件,bin目录下执行
logstash -e "input { stdin { } } output { stdout {} }"
执行以下命令安装Logstash-input-jdbc插件
logstash-plugin install logstash-input-jdbc
新建一个mysql 文件夹用来存放mysql 驱动jar 与全量同步配置文件。
mysql-connector-java-5.1.41.jar
配置文件:
input {
stdin {
}
jdbc {
type => "datatable"
# mysql相关jdbc配置
jdbc_connection_string => "jdbc:mysql://*.*.*.*:3306/*"
jdbc_user => "*"
jdbc_password => "*"
# jdbc连接mysql驱动的文件目录
jdbc_driver_library => "E:/work/logstash-6.2.4/mysql/mysql-connector-java-5.1.41.jar"
# the name of the driver class for mysql
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
# mysql文件, 也可以直接写SQL语句在此处,如下:
statement => "SELECT * from pgmp_dth_datatable"
#statement_filepath => "/opt/logstash/conf/jdbc.sql"
# 这里类似crontab,可以定制定时操作,比如每10分钟执行一次同步(分 时 天 月 年)
#schedule => "* * * * * *"
}
}
# 此处我不做过滤处理
filter {}
output {
#输出到elasticsearch的配置
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "datatable_index"
document_type => "%{type}"
}
#这里输出调试,正式运行时可以注释掉 json_lines rubydebug
stdout {
codec => json_lines
}
}
切换到bin 目录下执行
logstash -f ../mysql/jdbc.conf
即可实现数据全量同步。
网友评论