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

相关推荐
Nazi63 小时前
k8s的dashboard
云原生·容器·kubernetes
傻傻虎虎7 小时前
【Docker】常用帮忙、镜像、容器、其他命令合集(2)
运维·docker·容器
是小崔啊7 小时前
叩丁狼K8s - 概念篇
云原生·容器·kubernetes
在未来等你9 小时前
Elasticsearch面试精讲 Day 17:查询性能调优实践
大数据·分布式·elasticsearch·搜索引擎·面试
2401_8979300615 小时前
使用Docker轻松部署Neo4j图数据库
数据库·docker·neo4j
LeeZhao@16 小时前
【AI推理部署】Docker篇04—Docker自动构建镜像
人工智能·docker·容器
程思扬16 小时前
利用JSONCrack与cpolar提升数据可视化及跨团队协作效率
网络·人工智能·经验分享·docker·信息可视化·容器·架构
落日漫游17 小时前
dockercompose和k8s区别
docker·kubernetes
lllsure19 小时前
【Docker】存储卷
运维·docker·容器