因
由于最近公司业务需要,需要搭建ELK集群,对于初学者来说,Elasticsearc在使用过程中搭配ElasticSearch-Head使用起来更方便,可以更直观的查看索引、数据等等。但是通过Docker部署ElasticSearch和head后通过head访问es发现了许多坑,所以记录一下。
坑
- 带权限访问
需要将es的用户名和密码带到es-head的访问连接上,这个坑相对比较小,查查资料就可以找到
http://192.168.100.98:9100/?auth_user=elastic&auth_password=4BT5mSA2Weshq4zbNH1U
- 跨域
通过es-head去访问es的时候发现控制台一直提示跨域,所以在网上找了很多帖子说是要在es的配置文件中配置跨域,而且出奇的一致,跨域配置如下:
# 关闭跨域验证(可以不开启)
http.cors.enabled: true
http.cors.allow-origin: "*"
但是我配置了以后还是报跨域,最后很多途径终于发现了一条新配置,加上以后才解决跨域问题,配置如下:
http.cors.allow-headers: Authorization,X-Requested-With,Content-Type,Content-Length
- {“error”:“Content-Type header [application/x-www-form-urlencoded] is not supported”,“status”:406}
配置好跨域以后es可以看到索引,但是通过索引查看数据就是查不到,然后就发现浏览器控制台报错:{“error”:“Content-Type header [application/x-www-form-urlencoded] is not supported”,“status”:406},又是一顿查资料,终于找到了解决方案,就是需要将容器中es-head的vendor.js文件中的请求方式改一下。具体步骤如下:
#进入eshead的容器
docker exec -it 容器id bash
## 由于需要编辑文件,所以需要安装vim编辑器
## 如果下载较慢,获取嫌麻烦,可以使用docker cp命令将文件拷贝到宿主机修改,然后再拷贝回去即可
#更新源
apt-get update
#安装vim编辑器
apt-get install vim
#进入 _site
cd _site
# 打开vendor.js,需要修改文件中的6886 和 7575两行中的application/x-www-form-urlencoded为application/json;charset=UTF-8
# vi直接到某一行的快捷方式,在命令模式下输入 :行号即可。
vi vendor.js
# 退出容器
exit
#重启容器
docker restart 容器id