elasticsearch 安装
拉去镜像
- docker pull elasticsearch
查看版本
1 | docker image inspect nginx:latest | grep -i version |
发现是 latest 版本是5.6 的,所以指定版本拉去docker pull elasticsearch:7.6.2
docker 单机版启动
制作配置文件
1 | http.host: 0.0.0.0 |
2 | Uncomment the following lines for a production cluster deployment |
3 | transport.host: 0.0.0.0 |
4 | discovery.zen.minimum_master_nodes: 1 |
5 | 跨域配置 |
6 | http.cors.enabled: true |
7 | http.cors.allow-origin: "*" |
启动命令
1 | docker run -d --name zbcn-es -p 9200:9200 -p 9300:9300 -v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/elasticsearch/data:/usr/share/elasticsearch/data -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms64m -Xmx256m" elasticsearch:7.6.2 |
es 的中文分词
1 | 进入docker 容器 |
2 | docker exec -it zbcn-es /bin/bash |
3 | 下载中文分词(注意要和es 版本统一) |
4 | ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip |
- 安装中文分词报错
1 | 问题现象 |
2 | Installing https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip |
3 | Downloading https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip |
4 | [=================================================] 100%?? |
5 | Failed installing https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip |
6 | Rolling back https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip |
7 | Rolled back https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip |
8 | Exception in thread "main" java.lang.IllegalStateException: duplicate plugin: - Plugin information: |
9 | Name: analysis-ik |
10 | Description: IK Analyzer for Elasticsearch |
11 | Version: 7.6.2 |
12 | Elasticsearch Version: 7.6.2 |
13 | Java Version: 1.8 |
14 | Native Controller: false |
15 | Extended Plugins: [] |
16 | * Classname: org.elasticsearch.plugin.analysis.ik.AnalysisIkPlugin |
17 | at org.elasticsearch.plugins.PluginsService.readPluginBundle(PluginsService.java:405) |
18 | at org.elasticsearch.plugins.PluginsService.findBundles(PluginsService.java:386) |
19 | at org.elasticsearch.plugins.PluginsService.getPluginBundles(PluginsService.java:379) |
20 | at org.elasticsearch.plugins.InstallPluginCommand.jarHellCheck(InstallPluginCommand.java:844) |
21 | at org.elasticsearch.plugins.InstallPluginCommand.loadPluginInfo(InstallPluginCommand.java:821) |
22 | at org.elasticsearch.plugins.InstallPluginCommand.installPlugin(InstallPluginCommand.java:866) |
23 | at org.elasticsearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:254) |
24 | at org.elasticsearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:224) |
25 | at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) |
26 | at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125) |
27 | at org.elasticsearch.cli.MultiCommand.execute(MultiCommand.java:91) |
28 | at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125) |
29 | at org.elasticsearch.cli.Command.main(Command.java:90) |
30 | at org.elasticsearch.plugins.PluginCli.main(PluginCli.java:47) |
31 | |
32 | |
33 | 问题原因:时多次安装中文分词导致重复导致 |
34 | |
35 | 解决方案 |
36 | 删除 /usr/share/elasticsearch/plugins/.installing-XXXXXXXXXXXXXXXXXXX. 文件 |
37 | ll -al # 查看文件,包含隐藏文件 |
38 | 删除隐藏文件 |
39 | rm -rf .installing-XXXXXXXXXXXXXXXXXXX |
40 | 重新安装 |
41 | |
42 | 参考 |
43 | - https://cloudnull.io/2018/12/fixing-duplicate-plugin-issues-in-elasticsearch/ |
- 重启 es 容器
启动异常
1 | 错误截取信息 |
2 | "stacktrace": ["org.elasticsearch.bootstrap.StartupException: ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];", |
3 | 原因是 elasticsearch/data 文件夹的权限不够导致 |
4 | 解决方案(赋值最高权限) |
5 | chmod -777 /elasticsearch/data |
查看ElasticSearch内部信息
1 | docker inspect zbcn-es |
docker 集群模式启动
制作配置文件
配置文件位置
/usr/share/elasticsearch/data
Master 节点
1 | http.host: 0.0.0.0 |
2 | #集群名称 所有节点要相同 |
3 | cluster.name: "estest" |
4 | #本节点名称 |
5 | node.name: master |
6 | #作为master节点 |
7 | node.master: true |
8 | #是否存储数据 |
9 | node.data: true |
10 | bootstrap.system_call_filter: false |
11 | transport.host: 0.0.0.0 |
12 | discovery.zen.minimum_master_nodes: 1 |
- slave 节点
1 | http.host: 0.0.0.0 |
2 | #集群名称 所有节点要相同 |
3 | cluster.name: "estest" |
4 | #子节点名称 |
5 | node.name: salve1 |
6 | #不作为master节点 |
7 | node.master: false |
8 | node.data: true |
9 | bootstrap.system_call_filter: false |
10 | transport.host: 0.0.0.0 |
11 | discovery.zen.minimum_master_nodes: 1 |
12 | # 注意salve节点的discovery.zen.ping.unicast.hosts设置为esmaster:9300,这里的esmaster是master节点的docker容器名字 |
13 | discovery.zen.ping.unicast.hosts: ["esmaster:9300"] |
master 启动容器
1 | docker run -d --name esmaster --ulimit nofile=65536:131072 -p 9200:9200 -p 9300:9300 -v /home/docker/elasticsearch/elasticsearchmaster.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/elasticsearch/data/master:/usr/share/elasticsearch/data -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" elasticsearch |
1 | --name es # 容器名称 |
2 | 避免容器启动时会报bootstrap checks failed异常 |
3 | --ulimit nofile=65536:131072 |
4 | 端口映射:暴露出容器的9200,9300端口到宿主机的9200,9300端口 |
5 | -p 9200:9200 -p 9300:9300 |
6 | |
7 | 挂载卷到容器中,其实就是设置容器配置文件关联上面写好的配置文件,容器存储数据关联到宿主机的外部文件中 |
8 | -v /home/docker/elasticsearch/elasticsearchmaster.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/elasticsearch/data/master:/usr/share/elasticsearch/data |
9 | |
10 | 设置容器内Java虚拟机的内存大小 |
11 | -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" |
12 | 以上命令也可以写为如下,经测试不会出问题 |
13 | -e ES_JAVA_OPTS="-Xms512m -Xmx512m" |
salve 容器启动
1 | docker run -d --name essalve1 --ulimit nofile=65536:131072 --link esmaster:esmaster -v C:/work/docker_volume/elasticsearch/elasticsearchsalve1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v C:/work/docker_volume/elasticsearch/data/salve1:/usr/share/elasticsearch/data -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" elasticsearch |
- 主要是使用–link esmaster:esmaster指令,来连接master容器,别的和master容器启动参数基本一样。
elasticsearch 头 ElasticSearch-Head
为什么要安装ElasticSearch-Head
呢,原因是需要有一个管理界面进行查看ElasticSearch
相关信息
拉去镜像
1 | docker pull mobz/elasticsearch-head:5 |
运行容器
1 | docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5 |
安装 Kinaba
- 下载解压安装包,一定要装与ES相同的版本
拉去镜像
1 | docker pull kibana |
2 | |
3 | docker pull kibana:7.6.2 |
运行容器
1 | docker run --name zbcn-kibana -e ELASTICSEARCH_HOSTS=http://服务器地址:9200 -p 5601:5601 -d kibana |
2 | |
3 | docker run --name zbcn-kibana -e ELASTICSEARCH_HOSTS=http://服务器地址:9200 -p 5601:5601 -d kibana:7.6.2 |
4 | |
5 | docker run --name zbcn-kibana -v /home/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml |
6 | -e ELASTICSEARCH_HOSTS=http://服务器地址:9200 -p 5601:5601 -d kibana:7.6.2 |
运行
访问: http://自己的IP地址:5601/app/kibana
添加用户名密码
es 的elasticsearch.yml文件添加权限信息
1 | 开启登录验证(可选) |
2 | http.cors.allow-headers: Authorization |
3 | xpack.security.enabled: true |
4 | xpack.security.transport.ssl.enabled: true |
添加用户名密码
执行设置用户名和密码的命令,这里需要为4个用户分别设置密码: elastic, kibana, logstash_system,beats_system
1 | 执行方式 |
2 | bin/elasticsearch-setup-passwords interactive |
3 | |
4 | 展示 |
5 | Initiating the setup of passwords for reserved users elastic,kibana,logstash_system,beats_system. |
6 | You will be prompted to enter passwords as the process progresses. |
7 | Please confirm that you would like to continue [y/N]y |
8 | Enter password for [elastic]: |
9 | passwords must be at least [6] characters long |
10 | Try again. |
11 | Enter password for [elastic]: |
12 | Reenter password for [elastic]: |
13 | Passwords do not match. |
14 | Try again. |
15 | Enter password for [elastic]: |
16 | Reenter password for [elastic]: |
17 | Enter password for [kibana]: |
18 | Reenter password for [kibana]: |
19 | Enter password for [logstash_system]: |
20 | Reenter password for [logstash_system]: |
21 | Enter password for [beats_system]: |
22 | Reenter password for [beats_system]: |
23 | Changed password for user [kibana] |
24 | Changed password for user [logstash_system] |
25 | Changed password for user [beats_system] |
26 | Changed password for user [elastic] |
修改用户名密码
1 | curl -H "Content-Type:application/json" -XPOST -u elastic 'http://127.0.0.1:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "123456" }' |
修改kibana配置
1 | vim ../config/kibana.yml |
2 | elasticsearch.username: "elastic" |
3 | elasticsearch.password: "passwd" |
说明: 外部配置文件的在 配置文件的 kibana.yml 中