docker安装elasticsearch,head插件

docker安装elasticsearch

1、搜索,拉取镜像
docker search elasticsearch:7.8.0
docker pull elasticsearch:7.8.0
2、创建网络

如果需要安装kibana、logstash等其他,需要创建一个网络,名字任意取,让他们在同一个网络,使得es和kibana、logstash通信

docker network create esnet
3、创建容器
docker run -di --restart=always --name elasticsearch --net esnet -p 9200:9200 -p 9300:9300 elasticsearch:7.8.0 /bin/bash
4、进入容器
docker exec -it elasticsearch bash
5、cd进入config/elasticsearch.yml,配置:
cluster.name: "docker-cluster"
network.host: 0.0.0.0
node.name: node-1
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300"]
discovery.zen.minimum_master_nodes: 1
node.ingest: true
bootstrap.memory_lock: false
node.max_local_storage_nodes: 1
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.system_call_filter: false
cluster.initial_master_nodes: node-1
  • 退出容器 exit
6、安装ik分词器
  • 上传elasticsearch-analysis-ik-7.8.0.zip到服务器,比如/home/admin/tmp,(目录自选)
  • 将压缩包cp进docker容器
docker cp /home/admin/tmp/elasticsearch-analysis-ik-7.8.0.zip elasticsearch:/usr/share/elasticsearch/plugins
  • 进入容器
docker exec -it elasticsearch bash
  • 进入/usr/share/elasticsearch/plugins目录,我们发现ik分词器已经拷贝到此目录,解压:
unzip elasticsearch-analysis-ik-7.8.0.zip -d elasticsearch-analysis-ik-7.8.0
  • 删除 elasticsearch-analysis-ik-7.8.0.zip
rm -rf elasticsearch-analysis-ik-7.8.0.zip
  • 退出容器,重启容器
exit
docker restart elasticsearch
  • 创建索引,创建映射,添加文档,测试分词

docker安装head插件

1、拉取镜像
docker pull mobz/elasticsearch-head:5
2、创建,启动镜像
docker run --restart=always --name elasticsearch-head -di -p 9100:9100 docker.io/mobz/elasticsearch-head:5
3、连接elasticsearch
  • 网页打开elasticsearch-head页面:宿主机ip:9100
  • 连接es,宿主机ip:9200

遇到的问题及解决方法:

1、连接不上ES,跨域问题:

修改ES根目录下配置文件vi config/elasticsearch.yml加入2个参数,并重启
http.cors.enabled: true
http.cors.allow-origin: “*”
参数说明:
参数 缺省值 说明
http.cors.enabled true 如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST 请求。
http.cors.allowed.origin localhost 如果 http.cors.enabled 的值为 true,那么该属性会指定允许 REST 请求来自何处。


2、用head插件查询时报错

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

解决办法:

进入容器 (默认进入时路径: /usr/src/app)
sudo docker exec -it -u root elasticsearch-head /bin/bash
修改 vendor.js 共有两处,重启head插件

vi _site/vendor.js

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

3、docker基础容器中 bash: vim: command not found 问题解决

这是因为vim没有安装, 安装即可
先更新,防止提示:Unable to locate package vim
apt-get update
apt-get install vim

### 使用 Docker 安装配置 Elasticsearch 教程 #### 准备工作 为了确保顺利安装并运行 Elasticsearch,需调整虚拟内存设置以及创建专用的 Docker 网络环境。具体操作如下: 通过命令 `sysctl -w vm.max_map_count=262144` 来提高系统的最大映射计数至推荐值 262144[^2]。 接着利用 `docker network create --driver bridge --subnet=172.18.12.0/16 --gateway=172.18.0.1 esnet` 创建名为 `esnet` 的自定义桥接网络以便容器间通信。 #### 启动单节点实例 对于简单的测试场景,在本地启动一个独立的 Elasticsearch 实例非常便捷。这可以通过拉取官方镜像来实现: ```bash docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.1 ``` 随后使用下面这条指令快速启动服务,并将其绑定到主机端口上: ```bash docker run -d --name elasticsearch \ --net esnet \ -e "discovery.type=single-node" \ -p 9200:9200 \ -p 9300:9300 \ docker.elastic.co/elasticsearch/elasticsearch:7.10.1 ``` 上述命令中的 `-e "discovery.type=single-node"` 参数指定了该节点作为单一模式运作,适用于开发环境中;而两个暴露出来的端口中,前者供 REST API 访问,后者则是节点之间通讯所用。 #### 配置安全性和认证机制 (可选) 如果计划长期在线部署,则建议启用 X-Pack 提供的安全特性,包括但不限于用户验证、角色权限管理等功能。此时需要提前准备好 SSL/TLS 证书及相关密钥材料,并按照官方文档指引完成相应路径下的放置与引用。 #### 连接可视化工具 Kibana 或者第三方插件 为了让数据展示更加直观友好,可以考虑引入 Kibana 或其他图形界面组件辅助查看索引状态和查询日志记录等信息。例如,针对前面提到过的 `elasticsearch-head` 插件,可通过以下方式轻松集成: 停止旧版本(如果有): ```bash docker stop elasticHead && docker rm elasticHead ``` 启动新会话: ```bash docker run -d --name elasticHead \ --net esnet \ -p 9100:9100 \ mobz/elasticsearch-head:5 ``` 这里特别注意要保证两者处于同一网段内(`--net esnet`),从而允许它们相互发现和服务调用[^1]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值