当前位置: 首页 > news >正文

《Docker 部署 Elasticsearch + Kibana:搭建自己的日志搜索平台》

《Docker 部署 Elasticsearch + Kibana:搭建自己的日志搜索平台》
核心:设置内存限制,安装 ik 分词器,跨域配置

一、为什么需要 ELK?

当你的应用日志散落在各个服务器,排查问题需要登录多台机器 grep 时,你就需要一套集中式日志平台。Elasticsearch + Kibana 是业界标准方案。

二、docker-compose.yml 完整配置

version: '3.8' services: elasticsearch: image: elasticsearch:8.11.0 container_name: elasticsearch restart: always environment: - discovery.type=single-node - ES_JAVA_OPTS=-Xms512m -Xmx512m # 内存限制(核心) - xpack.security.enabled=false # 关闭安全认证(开发环境) - xpack.security.enrollment.enabled=false ports: - "9200:9200" - "9300:9300" volumes: - ./es-data:/usr/share/elasticsearch/data - ./es-plugins:/usr/share/elasticsearch/plugins networks: - elk-net kibana: image: kibana:8.11.0 container_name: kibana restart: always environment: - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 ports: - "5601:5601" depends_on: - elasticsearch networks: - elk-net networks: elk-net: driver: bridge

三、安装 IK 分词器(核心步骤)

IK 分词器是中文搜索的必备插件,让你能正确分词“北京大学”而不是切成“北京”和“大学”。

方法一:通过容器内命令安装

# 进入容器 docker exec -it elasticsearch bash # 安装 IK 分词器(版本需与 ES 一致) ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.11.0/elasticsearch-analysis-ik-8.11.0.zip # 退出并重启容器 exit docker restart elasticsearch

方法二:挂载安装(推荐)

# 创建插件目录 mkdir -p ./es-plugins/ik # 下载 IK 插件并解压(注意版本对应) cd ./es-plugins/ik wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.11.0/elasticsearch-analysis-ik-8.11.0.zip unzip elasticsearch-analysis-ik-8.11.0.zip rm elasticsearch-analysis-ik-8.11.0.zip # 重启容器 docker restart elasticsearch

四、跨域配置(让前端能直接调用)

如果你的前端应用需要直接调用 Elasticsearch API,需要配置跨域。有两种方式:

方式一:通过环境变量

environment: - http.cors.enabled=true - http.cors.allow-origin=* - http.cors.allow-headers=Authorization,X-Requested-With,Content-Type,Content-Length

方式二:修改 elasticsearch.yml

在挂载的配置文件中添加:

http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-headers: Authorization,X-Requested-With,Content-Type,Content-Length

五、启动与验证

# 启动服务 docker-compose up -d # 检查 ES 是否正常 curl http://localhost:9200 # 检查 IK 插件是否安装成功 curl http://localhost:9200/_cat/plugins # 访问 Kibana # 浏览器打开 http://你的IP:5601

六、测试 IK 分词器

curl -X POST "localhost:9200/_analyze" -H 'Content-Type: application/json' -d '{ "analyzer": "ik_max_word", "text": "北京大学生物医学工程系" }'

返回结果会看到 IK 正确分词:“北京大学”、“大学生物”、“生物医学工程”等。

七、常见问题

Q:ES 启动后自动退出?
A:检查内存配置,-Xms 和 -Xmx 不要超过宿主机内存的一半,512m 通常够用。

Q:IK 插件版本不对应?
A:必须和 ES 版本严格匹配,查看 ES 版本:curl http://localhost:9200 | grep number

http://www.jsqmd.com/news/582618/

相关文章:

  • 117. 如何在Rancher监控中测试 AlertManager
  • GitHub 学生认证须知
  • 学会OpenClaw后,我的摸鱼时间又变长了
  • 如何通过LAV Filters解决媒体播放难题?开源解码工具完整优化指南
  • STM32H723ZGT6 与 STM32F103RCT6 硬核对比,从参数到实战的全维度精准解析
  • 2026最新户外文旅灯光设计厂家推荐!权威榜单发布,品质服务双优 - 十大品牌榜
  • LFM2.5-1.2B-Thinking-GGUF版本管理与协作:GitHub工作流中的AI助手
  • 苏州日料哪家优惠力度大?火地铁板烧口令解锁隐藏福利,性价比碾压同档门店 - 资讯焦点
  • 为什么 ABAP 开发团队现在要认真看待 AI 这项能力
  • Ruby短信营销接口示例代码:Ruby开发环境下营销短信API接口的集成与Demo演示
  • 《从Claude Code泄露源码看工程架构:导读》
  • pre-pre-training的规则系统有哪些
  • 分子动力学自由能计算实战指南:从理论到实践掌握gmx_MMPBSA
  • 腾讯云摆摊、淘宝卖20万:OpenClaw掀起的自动化风暴,到底是什么?
  • BEVFormer论文复现
  • 118. 从 RKE1(Docker)迁移到 RKE2(容器化)后,JSON 日志未能正确解析
  • STM32 HAL驱动SSD1306 OLED显示库(C++/I²C/128×64)
  • Qwen1.5-1.8B GPTQ企业级部署指南:内网穿透与安全访问配置
  • Shell短信营销接口示例代码:利用Curl指令在Linux环境下快速调用营销短信API
  • OpenCV 颜色空间(RGB/BGR/HSV)超详细用法教程
  • IP归属地查询在互联网业务中能解决什么问题?3个真实场景+查询工具落地实操
  • 图像降噪太慢?用积分图像把Python版Non-Local Means速度提升10倍以上
  • 2026届学术党必备的五大AI科研平台横评
  • ImStudio终极指南:5个实战技巧打造高效GUI布局设计工作流
  • 2026-03月随笔
  • 超简单小白爬虫急速五分钟上手教程
  • 119. 使用 Fluentd concat 过滤器插件在牧场日志中串接多行日志
  • 当HTTPS上传太慢时,我是如何用Minio Java SDK在后端搞定大文件分片上传的
  • Java调用C/C++库从未如此简单:3步实现JNI替代方案,性能提升40%的FFM实测报告
  • 2026最新舞台灯光推荐!国内优质舞台灯光工厂权威榜单发布 - 十大品牌榜