Docker 安装 ElasticSearch

本贴最后更新于 1550 天前,其中的信息可能已经水流花落

一、什么是Elastic Stack

Elastic Stack如果你没有听过,那么ELK一定听过。ELK是三款软件的简称,分别是ElasticsearchLogstashKibana组成,随着Elastic的发展需要融入越来越的技术,比如Beats,如果再用每个技术的首字母大写拼接,名称会越来越长,所以技术团队决定换一个名称Elastic StackELK是之前的称呼Elastic Stack是新的称呼。

二、什么Elasticsearch

全文搜索是很多网站常见功能,比如Github站内搜索、JD商品搜索、B站视频搜索。Elasticsearch是当今最火的搜索引擎之一,它的底层基于另外一个java开源搜索引擎Lucene,是一款开源分布式搜索引擎,并且提供了一系列 REST API 操作接口。

三、docker安装Elasticsearch

1、拉去镜像

docker pull docker.io/elasticsearch:版本号
docker pull docker.io/elasticsearch:7.1.1

2、查看镜像

docker images

1.png

3、运行容器启动ElasticSearch

docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" b0e9f9f047e6
3.1、参数解释:
-d:后台启动
--name:容器名称
-p:端口映射
-e:设置环境变量
discovery.type=single-node:单机运行
b0e9f9f047e6:镜像id
如果启动不了,可以加大内存设置:-e ES_JAVA_OPTS="-Xms512m -Xmx512m"
3.2、使用docker ps命令查看容器状态

2.png

3.3、浏览器访问ElasticSearch地址(注:访问前先关闭防火墙)

3.png

4、安装ik分词器

docker exec -it es bash
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.1.1/elasticsearch-analysis-ik-7.1.1.zip

安装完毕之后输入:exit退出容器。
4.1、参数解释:
docker exec -it 容器id或容器名称 bash:进入容器内部,并以终端的形式输入命令
4.2、安装ik分词器后重启ElasticSearch
docker restart 7f
4.3、postman测试ik分词器(注意:把Content-Type设置为application/json )

4.png

5、安装es-head

docker pull mobz/elasticsearch-head:5

5.png

5.1、启动容器
docker start elasticsearch-head
5.2、访问es-head

6.png

5.3、es-head连接ElasticSearch

当你输入 http://192.168.232.128:9200/ 点击连接时,会发现无法连接。是因为前后端分离开发,存在跨域问题,需要在服务端做CORS的配置。我们再次进入ElasticSearch容器内部,修改elasticsearch.yml 配置。

docker exec -it es /bin/bash
[root@7f213e9fb6bb elasticsearch]# vi config/elasticsearch.yml
添加如下两条配置,注意冒号后面有空格,保存并退出。
http.cors.enabled: true 
http.cors.allow-origin: "*"

如图:

7.png

最后退出容器,并重启ElasticSearch。

[root@7f213e9fb6bb elasticsearch]# exit
exit
[root@localhost ~]# docker restart 7f

再次访问es-head,连接成功。

8.png

5.4、es-head无法显示数据

ElasticSearch7.1.1发送请求必须加Content-Type : application/json请求头,而es-head默认发送的是application/x-www-form-urlencoded请求头,我们需要修改es-head中vendor.js文件。

  1. 因为es-head容器中没有安装vi命令,所以从docker容器中拷贝vendor.js到宿主机当前目录
docker cp es-head:/usr/src/app/_site/vendor.js ./
  1. 修改vendor.js
vi vendor.js
:6886 跳转到6686行
contentType: "application/x-www-form-urlencoded
改成
contentType: "application/json;charset=UTF-8"
:7573 跳转到7573行
var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
改成
var inspectData = s.contentType === "application/json;charset=UTF-8" &&
最后
:WQ 保存退出
把修改好的文件
docker cp vendor.js es_head:/usr/src/app/_site

6、结束语

本篇文章主要讲解docker如何安装ElasticSearch7.1.1(单机版)+ik分词器+es-head可视化插件。

  • Docker
    18 引用 • 5 回帖
  • DevOps
    20 引用 • 2 关注
  • Java
    60 引用 • 501 回帖 • 1 关注
  • Python
    105 引用 • 237 回帖 • 2 关注
1 操作
luojie 在 2020-09-22 15:01:45 更新了该帖
回帖
请输入回帖内容 ...