注意:本方案没有进行数据持久化,切勿用于生产环境
1. 安装dockerdocker安装可参考此 Docker 从入门到实践系列二 - Docker 安装
2. 拉取elasticsearch镜像拉取最新版本elasticsearch docker pull elasticsearch 拉取指定版本elasticsearch,比如拉取7.11.1版本的elasticsearch docker pull elasticsearch:7.11.1
3. 启动elasticsearchdocker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d elasticsearch:7.11.1 或者 docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d 54d1c07bc236 运行docker镜像参数说明: -p:端口映射 -e:设置环境变量,discovery.type=single-node(单机运行),ES_JAVA_OPTS="-Xms512m -Xmx512m"(设置JVM参数) -d:后台启动 –name:容器名称 54d1c07bc236:镜像id
3.1 目录结构[root@node-123 systemd]# docker exec -it 54d1c07bc236 /bin/bash[root@54d1c07bc236 elasticsearch]# ls -ltotal 560-rw-r--r-- 1 elasticsearch root 3860 Feb 15 2021 LICENSE.txt-rw-r--r-- 1 elasticsearch root 545323 Feb 15 2021 NOTICE.txt-rw-r--r-- 1 elasticsearch root 7263 Feb 15 2021 README.asciidocdrwxr-xr-x 2 elasticsearch root 4096 Feb 15 2021 bindrwxrwxr-x 1 elasticsearch root 55 Dec 23 09:40 configdrwxrwxr-x 1 elasticsearch root 19 Dec 23 08:39 datadrwxr-xr-x 1 elasticsearch root 17 Feb 15 2021 jdkdrwxr-xr-x 3 elasticsearch root 4096 Feb 15 2021 libdrwxrwxr-x 1 elasticsearch root 71 Dec 23 09:41 logsdrwxr-xr-x 57 elasticsearch root 4096 Feb 15 2021 modulesdrwxrwxr-x 1 elasticsearch root 25 Dec 23 09:40 plugins 目录结构 目录 | 配置文件 | 描述 |
---|
bin | | 脚本文件,包括启动 Elasticsearch、安装插件,运行统计数据等。 | config | elasticsearch.yml | 集群配置文件 | JDK | | Java 运行环境 | data | path.data | 数据文件 | lib | | Java 类库 | logs | path.logs | 日志文件 | modules | | 包含所有 ES 模块 | plugins | | 包含所有已安装插件 |
4. 验证elasticsearch是否启动成功linux内用curl访问: curl http://localhost:9200,输入类似如下的信息表示安装成功 { "name": "54d1c07bc236", "cluster_name": "docker-cluster", "cluster_uuid": "5UUvjjKKRMeQG9FZvW_mxA", "version": { "number": "7.11.1", "build_flavor": "default", "build_type": "docker", "build_hash": "ff17057114c2199c9c1bbecc727003a907c0db7a", "build_date": "2021-02-15T13:44:09.394032Z", "build_snapshot": false, "lucene_version": "8.7.0", "minimum_wire_compatibility_version": "6.8.0", "minimum_index_compatibility_version": "6.0.0-beta1" }, "tagline": "You Know, for Search"}
5. 插件安装
5.1 安装IK分词器插件安装可以用elasticsearch-plugin install url命令 比如安装:elasticsearch-analysis-ik(分词器),Ik分词器版本要和ES和Kibana版本保持一致 docker进入容器命令,容器id为 54d1c07bc236 docker exec -it 54d1c07bc236 /bin/bash plugins安装步骤 cd /usr/share/elasticsearch/plugins/ 安装插件,elasticsearch-analysis-ik版本与elasticsearch保持一致,即7.11.1 elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.11.1/elasticsearch-analysis-ik-7.11.1.zip 退出容器 重启docker容器 docker restart 54d1c07bc236
5.2 分词器使用验证ik_smart:智能分词,最少切分,宁缺毋滥,保证查准率 ik_max_word:最大化分词法,最细粒度划分,尽量多的有意义的分词,保证查全率,ik_max_word分词包含 ik_smart Postman post请求分词测试:http://ip:9200/_analyze { "tokenizer": "ik_smart", "text": "花城广州"} 结果如下: { "tokens": [ { "token": "花城", "start_offset": 0, "end_offset": 2, "type": "CN_WORD", "position": 0 }, { "token": "广州", "start_offset": 2, "end_offset": 4, "type": "CN_WORD", "position": 1 } ] }
6. kibana安装
6.1 docker安装kibana安装kibana版本与elasticsearch版本一致,即7.11.1 docker pull kibana:7.11.1
6.2 启动kibana安装完成以后需要启动kibana容器,使用–link连接到elasticsearch容器,命令如下: docker run --name kibana --link=elasticsearch:elasticsearch -p 5601:5601 -d kibana:7.11.1 启动以后可以打开浏览器输入http://ip:5601就可以打开kibana的界面了。 
7、elasticsearch-head安装elasticsearch-head是用于Elasticsearch监控的插件 镜像 pull docker pull mobz/elasticsearch-head:5 查看镜像 输出结果包含mobz/elasticsearch-head REPOSITORY TAG IMAGE ID CREATED SIZEhello-world latest feb5d9fea6a5 3 months ago 13.3kBelasticsearch 7.11.1 bc3d45eba361 10 months ago 819MBkibana 7.11.1 ecf6e21a953f 10 months ago 1.01GBmobz/elasticsearch-head 5 b19a5c98e43b 4 years ago 824MB 启动容器 docker run -d --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5 浏览器访问(http://ip:9100/),结果如下: 
8、常见问题处理开始链接elasticsearch服务,会发现链接不上,由于是前后端分离开发,所以会存在跨域问题,需要在服务端做CORS的配置 docker exec -it elasticsearch /bin/bashvi config/elasticsearch.yml 在elasticsearch.yml的文件末尾添加如下配置,保存,退出容器,并重启 http.cors.enabled: truehttp.cors.allow-origin: "*" 参数说明: 参数 | 缺省值 | 说明 |
---|
http.cors.enabled | false | 是否支持跨域,默认为false | http.cors.allowed.origin | localhost | 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?/localhost(:[0-9]+)?/ | http.cors.max-age | 1728000(20天) | 浏览器发送一个“预检”OPTIONS请求,以确定CORS设置。最大年龄定义多久的结果应该缓存。 | http.cors.allow-methods | OPTIONS,HEAD,GET,POST,PUT,DELETE | 允许跨域的请求方式 | http.cors.allow-headers | X-Requested-With,Content-Type,Content-Length | 跨域允许设置的头信息 | http.cors.allow-credentials | | 是否返回设置的跨域Access-Control-Allow-Credentials头,如果设置为true,那么会返回给客户端。 |
退出容器 重启elasticsearch 执行,54d1c07bc236为elasticsearch容器id docker restart 54d1c07bc236 或者 docker restart elasticsearch 浏览器再次访问(http://ip:9100/),记得修改elasticsearch地址,显示【集群健康值: green】表示连接elasticsearch成功 
下载地址: Docker容器部署consul的详细步骤 Apache |