一、什么是Elastic Stack
Elastic Stack如果你没有听过,那么ELK一定听过。ELK是三款软件的简称,分别是Elasticsearch
、Logstash
、Kibana
组成,随着Elastic的发展需要融入越来越的技术,比如Beats
,如果再用每个技术的首字母大写拼接,名称会越来越长,所以技术团队决定换一个名称Elastic Stack
,ELK
是之前的称呼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
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
命令查看容器状态
3.3、浏览器访问ElasticSearch地址(注:访问前先关闭防火墙)
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 )
5、安装es-head
docker pull mobz/elasticsearch-head:5
5.1、启动容器
docker start elasticsearch-head
5.2、访问es-head
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: "*"
如图:
最后退出容器,并重启ElasticSearch。
[root@7f213e9fb6bb elasticsearch]# exit
exit
[root@localhost ~]# docker restart 7f
再次访问es-head,连接成功。
5.4、es-head无法显示数据
ElasticSearch7.1.1发送请求必须加Content-Type : application/json
请求头,而es-head默认发送的是application/x-www-form-urlencoded
请求头,我们需要修改es-head中vendor.js文件。
- 因为es-head容器中没有安装
vi
命令,所以从docker容器中拷贝vendor.js到宿主机当前目录
docker cp es-head:/usr/src/app/_site/vendor.js ./
- 修改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可视化插件。
欢迎来到testingpai.com!
注册 关于