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

相关推荐
AI小小怪37 分钟前
在Linux服务器上安装CVAT (Docker 28.5.1)
运维·docker·容器·数据标注·cvat
小坏讲微服务2 小时前
Docker-compose 搭建Maven私服部署
java·spring boot·后端·docker·微服务·容器·maven
!chen3 小时前
k8s-Pod中的网络通信
网络·docker·kubernetes
余—笙4 小时前
Linux(docker)安装搭建CuteHttpFileServer/chfs文件共享服务器
linux·服务器·docker
芥子沫5 小时前
《玩转Docker》[应用篇13]:Docker安装部署Emby及使用技巧:家庭媒体服务器
docker·视频·emby
熙客6 小时前
Kubernetes是如何保证有状态应用数据安全和快速恢复的
mysql·云原生·容器·kubernetes
爱宇阳7 小时前
从容器化到自动化:Spring Boot 项目 Docker 部署与 GitLab CI/CD 集成 Harbor 全流程
spring boot·docker·自动化
Elastic 中国社区官方博客7 小时前
通过混合搜索重排序提升多语言嵌入模型的相关性
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
liliangcsdn8 小时前
如何使用elasticdump进行elasticsearch数据还原
大数据·elasticsearch·搜索引擎
似水流年 光阴已逝8 小时前
Kubernetes Pod 基本原理:全面详解
云原生·容器·kubernetes·pod