Docker 下部署 Elasticsearch 8 并集成 Kibana 和 IK 分词器

文章目录

1 前言

在当今数据驱动的时代,高效、灵活的全文本搜索与大数据分析能力已成为众多应用的核心需求。Elasticsearch作为基于Lucene构建的开源分布式搜索引擎,尤其擅长处理海量非结构化数据,支持近实时检索与复杂分析,广泛应用于日志处理、企业搜索和实时监控等场景。与传统数据库相比,它在全文检索和横向扩展方面优势显著,但不适用于强一致性事务场景。值得强调的是,利用Docker部署Elasticsearch已成为高效管理其运行环境的主流方式------通过容器化技术,我们能够快速构建一致、隔离且易于扩展的ES集群,大幅简化配置和依赖管理流程。配合IK中文分词插件,更可精准处理中文文本。本文将以Docker为核心工具,详细介绍如何快速部署Elasticsearch 8.17及相关组件,并演示基础配置与分词功能的实际应用。

2 测试环境

  • docker 24
  • elasticsearch 8.17
  • kibana: 8.17

3 实现步骤

docker-compose 配置

新建一个docker-compose.yml文件,填入以下内容。该配置文件定义了两个服务:Elasticsearch 和 Kibana。通过环境变量设置安全认证参数,挂载数据卷以实现数据持久化,并配置了内存限制与端口映射,确保服务间可互通且资源使用受控。

yml 复制代码
#version: '3.7'
services:
  elasticsearch:
    image: elasticsearch:8.17.4
    container_name: es01
    privileged: true
    volumes:
        - ./volumes/elasticsearch/data:/usr/share/elasticsearch/data
        - ./volumes/elasticsearch/plugins:/usr/share/elasticsearch/plugins
    ports:
      - "9200:9200"
      - "9300:9300"
    mem_limit: 1g
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=true
      - ELASTIC_PASSWORD=your_password_1
  kibana:
    image: kibana:8.17.4
    container_name: kibana01
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
      - ELASTICSEARCH_USERNAME=kibana_user
      - ELASTICSEARCH_PASSWORD=your_password_2
    ports:
      - "5601:5601"
    depends_on:
     - elasticsearch

创建新账号(for kibaba)

为增强安全性,建议为Kibana服务创建专用用户,避免直接使用Elasticsearch内置的elastic超级用户。以下命令用于在Elasticsearch容器中创建新用户并配置相应权限。

新建账号

bash 复制代码
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-users useradd kibana_user
配置密码: your_password_2

给新账号授权

bash 复制代码
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-users roles -a superuser kibana_user
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-users roles -a kibana_system kibana_user

ik分词插件

IK分词器是针对中文文本处理的重要插件,支持智能分词和最大分词等多种模式。安装该插件后,Elasticsearch能够更准确地理解和处理中文内容。

安装插件:

bash 复制代码
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-plugin install https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-8.17.4.zip

配置volumes目录权限

为确保容器内Elasticsearch进程有足够的权限读写挂载目录,需对本地数据卷目录进行权限设置。

bash 复制代码
chmod -R 777 .volumes

4 测试

完成部署与配置后,需验证Elasticsearch、Kibana及IK分词器是否正常工作。可通过浏览器访问对应端口,或使用curl命令测试服务连通性。

浏览器访问

  • elasticsearch: http://your_ip:9200/
  • kibana: http://your_ip:5601/ 使用前面的 kibana_user 账号登录

curl访问

bash 复制代码
curl -u elastic:your_password_1 http://your_ip:9200

分词器测试

在Kibana的Dev Tools界面中,可对IK分词器的两种模式进行测试。ik_smart模式进行最粗粒度切分,适合精确查询场景;ik_max_word则进行最细粒度切分,适用于高召回需求。

在devtools下进行测试: http://your_ip:5601/app/dev_tools#/console/shell

ik_smart

json 复制代码
GET /_analyze
{
  "tokenizer":"ik_smart",
  "text":"中华人民共和国"
}

效果如下:

ik_max_word

json 复制代码
GET /_analyze
{
  "tokenizer":"ik_max_word",
  "text":"中华人民共和国"
}

效果如下:

索引管理

Kibana 提供了完善的索引管理功能,在绝大多数场景下已经完全有能力取代 Elasticsearch Head 插件,并且是 Elastic 官方推荐的做法。通过Kibana界面,用户可以直观地查看索引状态、执行映射管理及进行索引生命周期操作。索引管理界面参见:

http://your_ip:5601/app/management/data/index_management/indices

效果如下:

5 参考资料

https://www.elastic.co/docs/deploy-manage/deploy/self-managed/install-elasticsearch-docker-basic
https://elastic.ac.cn/guide/en/elasticsearch/reference/current/docker.html
https://hub.docker.com/_/elasticsearch/
Docker安装Elasticsearch、ik分词器、可视化工具 7.7.0
analysis-ik插件 release note
ik插件下载地址列表
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/index-mgmt.html

相关推荐
正仪2 小时前
kubernetes中list-watch机制
云原生·容器·kubernetes
cui_hao_nan3 小时前
从零搭建 Kubernetes 集群:Ubuntu + kubeadm 完整实战
ubuntu·容器·kubernetes
fb_123454 小时前
Docker入门-第3章-容器镜像深度解析
运维·docker·容器
听到微笑5 小时前
Elasticsearch 如何存储与检索海量向量
数据库·elasticsearch
IT摆渡者5 小时前
基于 Docker 部署 Nextcloud 私有云盘(外挂 Windows 共享)项目实践
运维·docker·容器
墨香幽梦客7 小时前
Kubernetes+Istio实现CRM系统弹性伸缩:服务网格下的流量治理与熔断策略
容器·kubernetes·istio
新时代牛马7 小时前
单机 docker run 管不住了?从编排需求、期望状态到调度/自愈闭环讲透
运维·docker·容器
binqian7 小时前
Docker Desktop(WSL2 后端)三层网络互通技术文档
网络·docker·容器
知福致福8 小时前
【技术复盘】Git 分支污染与提交污染事故排查与解法
大数据·git·elasticsearch
LuiChun8 小时前
与精神病患者的日常探讨20260913
docker