使用Docker安装Elasticsearch

拉取镜像

1
docker pull elasticsearch:6.8.0

启动容器

准备配置文件

需要在Docker宿主机创建elasticsearch配置文件挂载到容器中,方便修改配置。

1
2
3
4
vim /etc/elasticsearch.yml

以后修改配置文件后,重启docker容器即可。
docker restart es

文件内容:

1
2
3
4
cluster.name: "docker-cluster"
network.host: 0.0.0.0
# 允许任何端口访问
transport.host: 0.0.0.0

启动容器

1
2
3
docker run -di --name=es -p 9200:9200 -p 9300:9300 -v /etc/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:6.8.0

docker run -di --name=es -p 9200:9200 -p 9300:9300 -v /Users/lien/docker_work/es/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:6.8.0

安装分词器

安装

1
2
3
4
5
6
7
8
9
10
进入容器
docker exec -it es /bin/bash

运行安装命令(因为下载地址是github,所以可能会有点慢,推荐下载后,复制到容器安装)

1. IK分词器
/usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.0/elasticsearch-analysis-ik-6.8.0.zip

2. 拼音分词器
/usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v6.8.0/elasticsearch-analysis-pinyin-6.8.0.zip

测试

1
2
3
4
5
6
7
8
9
使用postman测试
http://127.0.0.1:9200/_analyze

类型json
参数:
{
"analyzer":"ik_max_word",
"text":"我是程序员"
}

ELK安装

安装Kibana

下载镜像

1
docker pull kibana:6.8.0

启动容器

1
2
3
4
docker run -d --name kibana -p 5601:5601 kibana:6.8.0

访问:
http://localhost:5601/

注意事项

1
2
3
4
5
因为没有使用配置网络,所以需要把内部的访问地址修改成ip
docker exec -it kibana /bin/bash

vi /config/kibana.yml
把ip修改成外部能访问的ip

使用Logstash

下载镜像

1
docker pull logstash:6.8.0

配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

文件内容(使用jdbc倒入数据库的数据到es)
input {
jdbc {
# mysql jdbc connection string to our
jdbc_connection_string => "jdbc:mysql://192.168.5.185:3306/test?characterEncoding=UTF8"
# the user we wish to excute our statement as
jdbc_user => "root"
jdbc_password => "root"
# the path to our downloaded jdbc driver
jdbc_driver_library => "D:/logstash‐5.6.8/mysqletc/mysql‐connector‐java‐5.1.46.jar"
# the name of the driver class for mysql
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
# 以下对应着要执行的sql的绝对路径。
statement => "SELECT id,name,price,image,weight,category_name,brand_name,spec FROM tb_sku"
# 定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为 每分钟都更新
schedule => "* * * * *"
}
}

output {
elasticsearch {
#ESIP地址与端口
hosts => "192.168.5.185:9200"
#ES索引名称(自己定义的)
index => "tensquare"
#自增ID编号
document_id => "%{id}" document_type => "article"
}
stdout {
#以JSON格式输出
codec => json_lines
}
}

启动容器

注意事项