1. 安裝 elasticsearch
第一次使用的是 apt-get
的安裝方式, 應該是軟件源沒設置爲最新的, 結果安裝的版本爲1.7x
的, 果斷刪除.
第二次直接將 elasticsearch
的 zip 包下載下來安裝.
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1.zip
unzip elasticsearch-5.5.1.zip
- 配置. 將
elasticsearch.yml
的cluster.name
的註釋打開, 可以自己根據情況修改名稱. 將node.name
註釋打開. 如果需要非當前主機以外的 ip 可以訪問則需要將network.host
的註釋打開,並且將值修改爲0.0.0.0
, 也可以指定幾個固定的 ip 訪問, 不同 ip 之間用,
號隔開即可. 如果需要修改默認的端口,需要將http.port
的註釋打開,並且修改後面的值 - 配置完成以後就可以調用 bin 目錄下的
elasticsearch
來啓動了.
2. 安裝 logstash
使用
logstash
將mysq
裏的表數據自動同步到elasticsearch
按照官方的文檔給出的apt-get
方式安裝
- Download and install the Public Signing Key:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
- You may need to install the apt-transport-https package on Debian before proceeding:
sudo apt-get install apt-transport-https
- Save the repository definition to /etc/apt/sources.list.d/elastic-5.x.list:
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
- 最後就可以安裝5.5.1版的 logstash 了
sudo apt-get update && sudo apt-get install logstash
3. 安裝logstash的 jdbc 插件 logstash-input-jdbc
因爲 logstash-input-jdbc 是使用 ruby 開發的, 所以要修改一下 gem 的源, 不然安裝的過程中請求資源的時候會下不動, 因爲有些依賴是放在亞馬遜上了的.
- 修改 logstash 下的Gemfile 數據源
- 將 Gemfile 裏的
source
值修改爲https://ruby.taobao.org
- 將 Gemfile.jruby-1.o.lock 下的第二個
remote
值修改爲https://ruby.taobao.org
- 安裝 logstash-input-jdbc
進入到 logstash 的根目錄下, 執行
bin/logstash-plugin install logstash-input-jdbc
, 等待一會以後就會安裝成功.
- 配置
- 在
logstash
下創建文件夾,logstash_jdbc_xxx
根據自己需要建即可
- 下載
mysql-connector-java-5.1.38.jar
放到 剛創建的文件夾下 - 編寫配置文件
jdbc.conf
jdbc.conf:
input{
stdin {
}
jdbc {
jdbc_connection_string => "jdbc:mysql://192.168.2.19:3306/survey_acquisition_faq"
jdbc_user => "xxx"
jdbc_password => "xxx"
# the path to our downloaded jdbc driver
jdbc_driver_library => "/usr/share/logstash/bin/logstash_jdbc_faq/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"
statement_filepath => "/usr/share/logstash/bin/logstash_jdbc_faq/sql/t_help_document.sql"
schedule => "* * * * *"
type => "faq_help_document"
record_last_run => true
use_column_value => true
tracking_column => "update_time"
clean_run => true
}
jdbc {
jdbc_connection_string => "jdbc:mysql://192.168.2.19:3306/survey_acquisition_faq"
jdbc_user => "xxx"
jdbc_password => "xxx"
# the path to our downloaded jdbc driver
jdbc_driver_library => "/usr/share/logstash/bin/logstash_jdbc_faq/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"
statement_filepath => "/usr/share/logstash/bin/logstash_jdbc_faq/sql/t_question.sql"
schedule => "* * * * *"
type => "faq_help_question"
record_last_run => true
use_column_value => true
tracking_column => "update_time"
clean_run => true
}
jdbc {
jdbc_connection_string => "jdbc:mysql://192.168.2.19:3306/survey_acquisition_faq"
jdbc_user => "xxx"
jdbc_password => "xxx"
# the path to our downloaded jdbc driver
jdbc_driver_library => "/usr/share/logstash/bin/logstash_jdbc_faq/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"
statement_filepath => "/usr/share/logstash/bin/logstash_jdbc_faq/sql/t_video.sql"
schedule => "* * * * *"
type => "faq_help_video"
record_last_run => true
use_column_value => true
tracking_column => "update_time"
clean_run => true
}
}
filter {
json {
source => "message"
remove_field => ["message"]
}
}
output {
elasticsearch {
hosts => "127.0.0.1:9200"
index => "survey-faq"
document_id => "%{id}"
template_overwrite => true
template => "/usr/share/logstash/template/logstash.json"
}
stdout {
codec => json_lines
}
}
template_overwrite
和tempalte
這兩個屬性是用來定義分詞模板的, 定義的模板爲 ik 分詞模板, 如果不用 ik 的話, 這兩個屬性可以刪除. 配置 ik 分詞需要用下面的步驟安裝好 ik 分詞插件以後才能使用.
- 在
logstash_jdbc_xxx
目錄下創建一個文件夾sql
,用來放 sql 文件.
在 sql 目錄下創建 xx.sql 文件, 裏面放寫好的 sql 語句即可. 比如
select * from tablename
- 重新啓動 logstash 就會將制定的表數據導入到
elasticsearch
中
4. 安裝 ik 分詞
進入到 elasticsearch
的根目錄下, 執行
bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.1/elasticsearch-analysis-ik-5.5.1.zip
等待安裝完成
重啓 elasticsearch
即可