把es 6相关插件安装好后,弄了个索引测试一下,发现es-head竟然没有显示数据:
东找找西找找,才发现原来是:
elasticsearch 6增加了请求头严格校验的原因,并且返回结果是
{
“error” : “Content-Type header [application/x-www-form-urlencoded] is not supported”,
“status” : 406
}
如果是es 7 版本的,如果出现无数据也是这个原因~~~
解决办法:
有两种解决方法:区别就是docker容器里面无法使用vi/vim这一句话
一、
进入 es-head 容器里面的 _site目录修改配置文件vendor.js
如果出现bash: vim: command not found这种错误,可以参考下面的链接解决:
https://blog.csdn.net/weixin_42830314/article/details/108316362
需要修改的地方有两处:
-
6886行
contentType: "application/x-www-form-urlencoded
改成
contentType: “application/json;charset=UTF-8” -
7573行
var inspectData = s.contentType === “application/x-www-form-urlencoded” &&
改成
var inspectData = s.contentType === “application/json;charset=UTF-8” &&
由于文件有太多行了,可以按Esc进入命令模式,输入以下命令快速找到要修改的地方:
-
显示行号为
:set nu
-
跳转到指定行为
:行号
二、
不需要安装vim,没有第一种方法的错误
把配置文件从容器里面拷贝到宿主机目录(elasticsearch-head是容器名,也可以用容器ID):
docker cp elasticsearch-head:/usr/src/app/_site/vendor.js ./
修改文件 vi vendor.js
- 6886行 contentType: "application/x-www-form-urlencoded 改成
contentType: “application/json;charset=UTF-8” - 7573行 var inspectData = s.contentType ===
“application/x-www-form-urlencoded” && 改成 var inspectData =
s.contentType === “application/json;charset=UTF-8” &&
由于文件有太多行了,可以按Esc进入命令模式,输入以下命令快速找到要修改的地方:
-
显示行号为
:set nu
-
跳转到指定行为
:行号
将改完后的文件拷贝回容器:
docker cp vendor.js elasticsearch-head:/usr/src/app/_site
两种方法修改完之后,都不需要重启容器服务,只需要刷新网页即可。