Docker下部署ElasticSearch以及ES-Head

一.ElasticSearch部署

1.1 拉取镜像

es默认是没有latest版本的,这里需要指定一个版本号6.3.2,当然也可以用docker search elasticsearch查找可用的版本

 docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2

1.2 运行容器

ElasticSearch的默认端口是9200,我们把宿主环境9200端口映射到Docker容器中的9200端口,就可以访问到Docker容器中的ElasticSearch服务了,同时我们把这个容器命名为es。

docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2

1.3 添加跨域配置

1.3.1 修改docker的应用配置,首先要进入到运行应用的终端

docker exec -it es /bin/bash

1.3.2 然后找到elasticsearch.yml配置文件

# 显示文件
ls
结果如下:
LICENSE.txt  README.textile  config  lib   modules
NOTICE.txt   bin             data    logs  plugins

# 进入配置文件夹
cd config

# 显示文件
ls
结果如下:
elasticsearch.keystore  ingest-geoip  log4j2.properties  roles.yml  users_roles
elasticsearch.yml       jvm.options   role_mapping.yml   users

# 修改配置文件
vi elasticsearch.yml

vi修改文件,在最后一行后添加跨域配置

# 加入跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"

 四. 重启容器

docker restart es

二.ElasticSearch-Head部署

2.1 拉取镜像

docker pull mobz/elasticsearch-head:5

2.2 运行容器

docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5

好了,顺利连接的话,可以看到如图所示内容:

当然也有很多小伙伴在安装的时候会出现一些问题,我也将常见的问题列在下面。

2.3.常见问题

2.3.1 跨域报错

常见的跨域问题如上所示,缺少跨域配置,参考上文ElasticSearch部署的1.3

2.3.2 Content-Type header请求头错误

{ error:"Content-Type header [application/x-www-form-urlencoded] is not supported",status:406 }

数据浏览看不到任何数据,且查看数据请求报错,错误情况如下:

解决方法:(参考博文:https://blog.csdn.net/A_Story_Donkey/article/details/84135475)

docker exec -it es_admin /bin/bash进入es_head插件安装目录终端

 编辑/usr/src/app/_site/vendor.js(我的es_Head插件部署在docker容器中,路径作为参考)
修改共有两处:

1. 6886行 /contentType: "application/x-www-form-urlencoded 
    改成 contentType: "application/json;charset=UTF-8" 
2. 7574行 var inspectData = s.contentType === "application/x-www-form-urlencoded" && 
    改成 var inspectData = s.contentType === "application/json;charset=UTF-8" &&

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页