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

2017-08-17 15:53:05来源:oschina作者:zcqshine人点击

分享


## 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.yml` 的 `cluster.name` 的注释打开, 可以自己根据情况修改名称. 将`node.name`注释打开.如果需要非当前主机以外的 ip 可以访问则需要将 `network.host`的注释打开,并且将值修改为 `0.0.0.0`, 也可以指定几个固定的 ip 访问, 不同 ip 之间用`,`号隔开即可. 如果需要修改默认的端口,需要将`http.port`的注释打开,并且修改后面的值
4. 配置完成以后就可以调用 bin 目录下的 `elasticsearch` 来启动了.
## 2. 安装 logstash
> 使用 `logstash` 将 `mysq` 里的表数据自动同步到 `elasticsearch`
按照官方的文档给出的`apt-get`方式安装
1. Download and install the Public Signing Key:
> `wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
`
2. You may need to install the apt-transport-https package on Debian before proceeding:
>`sudo apt-get install apt-transport-https`
3. 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`
4. 最后就可以安装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`
2. 将 Gemfile.jruby-1.o.lock 下的第二个 `remote` 值修改为`https://ruby.taobao.org`
2. 安装 logstash-input-jdbc
> 进入到 logstash 的根目录下, 执行 `bin/logstash-plugin install logstash-input-jdbc`, 等待一会以后就会安装成功.
3. 配置
> 1. 在 `logstash` 下创建文件夹, `logstash_jdbc_xxx` 根据自己需要建即可
2. 下载`mysql-connector-java-5.1.38.jar`放到 刚创建的文件夹下
3. 编写配置文件 `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 分词插件以后才能使用.
5. 在`logstash_jdbc_xxx`目录下创建一个文件夹`sql`,用来放 sql 文件.
> 在 sql 目录下创建 xx.sql 文件, 里面放写好的 sql 语句即可. 比如 `select * from tablename`
6. 重新启动 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` 即可

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台