1、下载文件 Elasticsearch
前往 https://www.elastic.co/cn/downloads/elasticsearch 下载,选择版本 7.8.0

2、安装 IK 分词器插件
https://github.com/medcl/elasticsearch-analysis-ik

3、解压 elasticsearch-7.8.0-linux-x86_64.tar.gz 
tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz

4、在 elasticsearch-7.8.0 下创建插件文件夹

mkdir -p  elasticsearch-7.8.0/plugins/ik

5、解压 elasticsearch-analysis-ik-7.8.0.tar.gz
tar -zxvf elasticsearch-analysis-ik-7.8.0.tar.gz -C elasticsearch-7.8.0/plugins/ik/    # ik 文件夹中只要内容

6、创建Elasticsearch 账号

groupadd es
useradd es -g es -p es
chown -R es:es elasticsearch-7.8.0
su es #  登录Elasticsearch 账号,不登录可能有权限错误

7、创建索引和设置 mapping

curl -X PUT "localhost:9200/works/_mapping" -H 'Content-Type: application/json' -d'
{
  "properties": {
    "title": {
      "type": "text",
      "analyzer": "ik_max_word",
      "search_analyzer": "ik_max_word"
    },
    "keywords": {
      "type": "text",
      "analyzer": "ik_max_word",
      "search_analyzer": "ik_max_word"
    }
  }
}
'

8、下载 Logstash
前往 https://www.elastic.co/cn/downloads/logstash 下载,选择版本 7.8.0

9、下载 MySQL Connector/J
前往 https://downloads.mysql.com/archives/c-j 下载,选择版本 5.1.48

10、配置 Logstash
添加 SQL 文件:config/works.sql

SELECT w.id,
       w.categoryId,
       w.categorySceneId,
       w.title,
       wr.alpha,
       wr.looped,
       wr.aspectRatio,
       u.designer,
       u.enterprise,
       w.enable,
       w.original,
       w.recommended,
       w.sort,
       (SELECT GROUP_CONCAT(k.word SEPARATOR ' ')
        FROM workkeyword wk
                 JOIN keyword k ON k.id = wk.keywordId
        WHERE wk.workId = w.id) AS keywords
FROM work w
         JOIN workresource wr ON w.workResourceId = wr.id
         JOIN registereduser u ON u.id = w.userId


11、添加配置文件:config/logstash.conf,内容为:

# 每分钟从数据库同步一次数据到 ES
input {
  jdbc {
	jdbc_driver_library => "/mnt/elk/mysql-connector-java-5.1.48/mysql-connector-java-5.1.48.jar"
	jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false"
	jdbc_user => "root"
	jdbc_password => "root"
	jdbc_driver_class => "com.mysql.jdbc.Driver"
	jdbc_paging_enabled => "true"
    jdbc_page_size => "50000"
	jdbc_default_timezone => "Asia/Shanghai"
	statement_filepath => "./config/works.sql"
	schedule => "* * * * *"
	type => "jdbc"
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "stcoool-works"
    document_id => "%{id}"
  }
}

12、运行 ./bin/logstash -f config/logstash.conf 启动