unbuntu下安裝Elasticsrearch+logstash+elasticsearch-analysis-ik

1. 安裝 elasticsearch

第一次使用的是 apt-get 的安裝方式, 應該是軟件源沒設置爲最新的, 結果安裝的版本爲1.7x的, 果斷刪除.

第二次直接將 elasticsearch 的 zip 包下載下來安裝.

  1. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1.zip
  2. unzip elasticsearch-5.5.1.zip
  3. 配置. 將elasticsearch.ymlcluster.name 的註釋打開, 可以自己根據情況修改名稱. 將node.name註釋打開. 如果需要非當前主機以外的 ip 可以訪問則需要將 network.host的註釋打開,並且將值修改爲 0.0.0.0, 也可以指定幾個固定的 ip 訪問, 不同 ip 之間用,號隔開即可. 如果需要修改默認的端口,需要將http.port的註釋打開,並且修改後面的值
  4. 配置完成以後就可以調用 bin 目錄下的 elasticsearch 來啓動了.

2. 安裝 logstash

使用 logstashmysq 裏的表數據自動同步到 elasticsearch

按照官方的文檔給出的apt-get方式安裝

  1. Download and install the Public Signing Key:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

  1. You may need to install the apt-transport-https package on Debian before proceeding:

sudo apt-get install apt-transport-https

  1. 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

  1. 最後就可以安裝5.5.1版的 logstash 了

sudo apt-get update && sudo apt-get install logstash

3. 安裝logstash的 jdbc 插件 logstash-input-jdbc

因爲 logstash-input-jdbc 是使用 ruby 開發的, 所以要修改一下 gem 的源, 不然安裝的過程中請求資源的時候會下不動, 因爲有些依賴是放在亞馬遜上了的.

  1. 修改 logstash 下的Gemfile 數據源
  1. 將 Gemfile 裏的 source 值修改爲 https://ruby.taobao.org
  1. 將 Gemfile.jruby-1.o.lock 下的第二個 remote 值修改爲 https://ruby.taobao.org
  2. 安裝 logstash-input-jdbc

進入到 logstash 的根目錄下, 執行 bin/logstash-plugin install logstash-input-jdbc, 等待一會以後就會安裝成功.

  1. 配置
  1. logstash 下創建文件夾, logstash_jdbc_xxx 根據自己需要建即可
  1. 下載mysql-connector-java-5.1.38.jar放到 剛創建的文件夾下
  2. 編寫配置文件 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_overwritetempalte 這兩個屬性是用來定義分詞模板的, 定義的模板爲 ik 分詞模板, 如果不用 ik 的話, 這兩個屬性可以刪除. 配置 ik 分詞需要用下面的步驟安裝好 ik 分詞插件以後才能使用.

  1. logstash_jdbc_xxx目錄下創建一個文件夾sql,用來放 sql 文件.

在 sql 目錄下創建 xx.sql 文件, 裏面放寫好的 sql 語句即可. 比如 select * from tablename

  1. 重新啓動 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 即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章