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

2018-05-11 16:06:57 浏览数 (1)

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
  2. 将 Gemfile.jruby-1.o.lock 下的第二个 remote 值修改为 https://ruby.taobao.org
  3. 安装 logstash-input-jdbc

进入到 logstash 的根目录下, 执行 bin/logstash-plugin install logstash-input-jdbc, 等待一会以后就会安装成功.

  1. 配置

  1. logstash 下创建文件夹, logstash_jdbc_xxx 根据自己需要建即可
  2. 下载mysql-connector-java-5.1.38.jar放到 刚创建的文件夹下
  3. 编写配置文件 jdbc.conf

jdbc.conf:

代码语言:javascript复制
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 即可

0 人点赞