最近要实现个简单的IM系统,打算用ES做全文检索以及历史消息存储,复习下ES的安装以及使用。
因为网络问题,官网镜像拉不到,大算找个合适版本的镜像并安装。
网址:https://docker.aityp.com/r/docker.io/library/elasticsearch
展开代码docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/elasticsearch:8.13.4 docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/elasticsearch:8.13.4 elasticsearch:8.13.4
先修改配置文件
展开代码echo "vm.max_map_count=262144" >> /etc/sysctl.conf sysctl -p
找个目录创建docker-compose.yml、es-logs和es-data
展开代码version: '3.8' services: elasticsearch: # 指定 ES 镜像版本(推荐固定版本,如 8.14.1,避免自动升级) image: elasticsearch:8.14.1 # 容器名称 container_name: es8 # 重启策略:容器退出时自动重启 restart: always # 端口映射(9200:HTTP 接口,9300:节点间通信) ports: - "9200:9200" - "9300:9300" # 环境变量(核心配置) environment: # 单节点模式(开发/测试环境) - discovery.type=single-node # 设置集群名称 - cluster.name=es-cluster # 设置节点名称 - node.name=es-node-1 # 关闭 HTTPS(开发环境简化,生产环境建议开启) - xpack.security.enabled=false # 关闭加密通信(开发环境) - xpack.security.http.ssl.enabled=false # JVM 内存设置(建议不超过物理内存的 50%,且不超过 32G) - ES_JAVA_OPTS=-Xms512m -Xmx512m # 数据卷挂载(持久化数据,避免容器删除后数据丢失) volumes: - ./es-data:/usr/share/elasticsearch/data - ./es-logs:/usr/share/elasticsearch/logs # 资源限制 deploy: resources: limits: memory: 1G # 网络模式(可选,默认 bridge 即可) networks: - es-network # 自定义网络:让三个服务在同一网络,避免端口冲突 networks: es-network: driver: bridge ipam: config: - subnet: 172.16.0.0/16 # 自定义网段(解决冲突) gateway: 172.16.0.1 # 网关地址(网段的第一个IP,默认即可)
要注意的点是自定义网络那里,不要和内网已有网段冲突了。
启动
docker compose up -d
停止
docker compose stop
重启
docker compose restart
查看 ES 日志
docker compose logs -f elasticsearch
删除 ES 容器(保留数据卷)
docker compose down
删除容器 + 数据卷(谨慎操作,数据会丢失)
docker compose down -v
启动后执行
curl http://localhost:9200
如果打印如下内容则成功:
展开代码{ "name" : "es-node-1", "cluster_name" : "es-cluster", "cluster_uuid" : "e4dBYZOXSvOWi_KOJ_s4iw", "version" : { "number" : "8.13.4", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "da95df118650b55a500dcc181889ac35c6d8da7c", "build_date" : "2024-05-06T22:04:45.107454559Z", "build_snapshot" : false, "lucene_version" : "9.10.0", "minimum_wire_compatibility_version" : "7.17.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "You Know, for Search" }
本文作者:刘涛
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!