Docker 部署 Elasticsearch 9 的搭建过程

 更新时间:2025年06月25日 10:54:35   作者:逆风飞翔的小叔  
本文详解Elasticsearch 9.x在Linux上通过Docker部署流程,涵盖新特性如Lucene10优化、BBQ提升向量搜索、EDOT支持多云监控等,并指导配置安全认证与访问权限,感兴趣的朋友跟随小编一起看看吧

一、前言

Elasticsearch 9.x 版本是一个非常强大且功能丰富的搜索引擎,它广泛用于全文搜索、日志分析、安全监控等场景。要在你的环境中搭建 Elasticsearch 9.x,你需要遵循以下步骤。这里我将以在 Linux 系统上安装 Elasticsearch 为例,因为 Elasticsearch 支持多种操作系统,但 Linux 因其稳定性和性能优化而成为首选。

二、Elasticsearch 9 新特性介绍

Elasticsearch 9相比之前的版本带来了很多新特性的补充,下面分别做简单的介绍。官网:Elastic — The Search AI Company | Elastic

2.1 基于 Lucene 10 重大升级

Elasticsearch 9.0 基于 Lucene 10.1.0 构建,带来了显著的性能提升和资源优化 Lucene 10 引入了更好的并行处理、更智能的索引机制和硬件优化,使得 Elasticsearch 在处理大规模数据时更加高效。

2.2 Better Binary Quantization(BBQ)

Elastic 自主研发的 BBQ 技术,现已正式发布,性能比 OpenSearch 快 5 倍。

该技术通过高效的二进制量化算法,显著提升了向量搜索的速度和准确性,特别适用于大规模生产环。

Elastic 的 BBQ 更好的二进制量化技术通过将每个向量维度压缩为单个位,极大地减少了存储空间和内存占用,同时保持了高质量的搜索结果。这使得在进行大规模向量搜索时,既节省了资源,又提高了效率。

2.3 Elastic Distributions of OpenTelemetry(EDOT)

EDOT 提供了原生的 OpenTelemetry 架构支持,简化了数据采集和分析流它支持统一的信号格式,增强了跨系统的可观测性,特别适用于多云和混合云环。

EDOT 是 Elastic 提供的工具,可以帮助更轻松地收集和分析不同系统的数据,它支持统一的数据格式,特别适合在多云和混合云环境中使用,提升了整体的监控和可视化能力。参考:Introducing Elastic Distributions of OpenTelemetry — Elastic Observability Labs

2.4 LLM 可观测性

新增的 LLM 可观测性功能,支持对生成式 AI 模型(如 Amazon Bedrock、Google Vertex AI、Azure OpenAI 和 OpenAI)进行性能、错误、提示、响应、使用情况和成本的全面监,这对于构建和维护 AI 驱动的应用至关重要。

2.5 攻击发现与自动导入

Elastic Security 引入了“攻击发现”和“自动导入”功能,利用 AI 驱动的安全分析,帮助安全运营团队快速识别和响应。 这些功能提高了检测效率,减少了手动干预。

2.6 ES|QL 增强

ES|QL(Elasticsearch Query Language)在 9.0 中进行了多项增强,包括:

  • 引入了 INLINESTATS 命令,支持内联统计,简化查询语法。

  • 引入语义搜索功能,支持对 semantic_text 字段类型进行查询,提升搜索的相关性。

  • 新增 KQL 函数支持,允许在 ES|QL 查询中使用 KQL(Kibana Query Language),提高查询的灵活性和兼容性。

  • 支持评分(_score)字段,允许根据相关性对结果进行排序。

2.7 语义检索

Elasticsearch 9.0 在语义搜索领域带来了重大升级,通过原生支持 semantic_text 字段类型、改进的查询方式以及与向量搜索的深度整合,为用户提供了更强大、更灵活的语义检索能力。

三、基于Docker部署Elasticsearch 9

接下来通过实际操作详细演示下基于Docker搭建Elasticsearch9的完整过程。

3.1 Elasticsearch 搭建方式一

3.1.1 创建docker网络

使用下面的命令创建一个docker 网络

docker network create elastic

3.1.2 获取es9镜像

使用下面的命令拉取es9镜像

docker pull elasticsearch:9.0.1

3.1.3 启动 es容器

使用下面的命令启动一个es容器

  • 注意,如果你的服务器内存不足,建议启动容器的时候在参数中限制一下容器占用的内存大小
docker run -d \
--name es9 \
--network elastic \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
elasticsearch:9.0.1

容器启动成功后,使用docker ps 命令检查一下

3.2 搭建kibana过程

为了后续操作es索引数据方便,这里使用es的可视化操作工具kibana,下面使用下面的命令启动kibana容器

docker run -d \
--name kibana_09 \
--network elastic \
-p 5601:5601 \
--privileged \
kibana:9.0.1

使用docker ps命令检查是否启动成功

3.3 创建es访问账户和密码

为了确保es的数据安全,默认情况下,es开启了数据安全访问测试,在yms配置文件中可以看到

使用下面的命令创建一个账户和密码,输入命令之后,在最后会随机生成一个密码,注意妥善保管

docker exec -it es9 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

3.4 为kibana创建访问es 的token令牌

还记得在使用kibana操作es的时候,在kibana中需要设置连接es的IP,端口等信息,在这里需要为kibana设置一个访问的token令牌,参考下面的命令

docker exec -it es9 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

执行之后稍等一会,就会生成一长串token字符串

3.5 生成访问kibana的验证码

这么做的目的还是为了访问数据的安全考虑,执行下面的命令,生成验证码

docker exec kibana_09 /usr/share/kibana/bin/kibana-verification-code

3.6 访问kibana

输入 IP:5601 ,访问kibana控制台

将前面生成的token粘贴到输入框,跳转到下面的界面后,再将生成的验证码输入进去

验证成功后,跳转到下面的页面进行初始化相关的设置

初始化完成后跳转到下面的登录界面,输入前面设置的账户和密码进行登录

登录成功后,就来到下面熟悉的界面了

点击左侧的Dev Tools菜单,就到了熟悉的界面,在这个界面就可以操作ES相关的命令了

3.7  搭建方式2

3.7.1 启动容器

使用下面的命令启动容器

docker run -d \
--name es9 \
--network elastic \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
elasticsearch:9.0.1

3.7.2 拷贝容器内部的文件

将容器内部的文件拷贝出来后面使用

docker cp es9:/usr/share/elasticsearch/data  /usr/local/soft/es
docker cp es9:/usr/share/elasticsearch/plugins /usr/local/soft/es
docker cp es9:/usr/share/elasticsearch/config /usr/local/soft/es

3.7.3 文件授权

后续会用到

chmod 777 -R config/ data/ plugins/

3.7.4 移除镜像

使用下面的命令移除镜像

docker stop es9 && docker rm es9

3.7.5 重启es容器

执行下面的命令重启es

docker run -d \
--name es9 \
--network elastic \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-v /usr/local/soft/es/data:/usr/share/elasticsearch/data \
-v /usr/local/soft/es/plugins:/usr/share/elasticsearch/plugins \
-v /usr/local/soft/es/config:/usr/share/elasticsearch/config \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
elasticsearch:9.0.1

3.7.6 修改es配置参数

在挂载目录中修改yml配置,调整下面的参数,调整完毕后注意重启es容器

3.7.7 启动kibana容器

使用下面的命令启动kibana容器

docker run -d \
--name kibana \
--network elastic \
-p 5601:5601 \
--privileged \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
kibana:9.0.1

3.7.8 拷贝容器内的文件

将容器内的文件拷贝出来

3.7.9 文件目录授权

为确保后续访问权限,给文件做下授权

然后移除容器

docker stop kibana && docker rm kibana

3.7.10 创建kibana账户

创建为kibana创建新账户,用于访问elasticsearch,容器内 /usr/share/elasticsearch/bin 目录下

对账户授权(123456)

3.7.11 修改容器外挂载目录中的kibana.yml

新增

xpack.screenshotting.browser.chromium.disableSandbox: true
elasticsearch.username: admin
elasticsearch.password: 123456

3.7.12 重启kibana容器

使用下面的命令重启容器

docker run -d \
--name kibana \
--network elastic \
-p 5601:5601 \
--privileged \
-v /usr/local/soft/kibana/data:/usr/share/kibana/data \
-v /usr/local/soft/kibana/config:/usr/share/kibana/config \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
kibana:9.0.1

四、写在文末

本文通过实际操作详细介绍了Elasticsearch 9 的详细搭建过程,希望对看到的同学有用哦,本篇到此结束,感谢观看。

到此这篇关于【云原生】Docker 部署 Elasticsearch 9 操作详解的文章就介绍到这了,更多相关Docker 部署 Elasticsearch 9 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker容器内目录显示异常的解决方法

    Docker容器内目录显示异常的解决方法

    在容器化技术日益普及的当下,Docker等容器平台已成为众多开发者与运维人员的得力助手,然而在使用容器的过程中,偶尔会遇到一些令人头疼的问题,比如进入容器后不显示目录,这无疑会给容器的管理和操作带来诸多不便,所以本文给大家介绍了Docker容器内目录显示异常的解决方法
    2025-01-01
  • Docker Nginx容器制作部署实现方法

    Docker Nginx容器制作部署实现方法

    这篇文章主要介绍了Docker Nginx容器制作部署实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Docker搭建Redis Cluster集群的教程详解

    Docker搭建Redis Cluster集群的教程详解

    这篇文章主要为大家详细介绍了Docker搭建Redis Cluster集群的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的可以参考下
    2024-03-03
  • Docker部署MongoDb的详细过程记录

    Docker部署MongoDb的详细过程记录

    这篇文章主要介绍了如何使用Docker Compose启动MongoDB副本集,包括配置文件编写、容器启动命令、副本集初始化、角色和用户创建等步骤,需要的朋友可以参考下
    2024-12-12
  • Docker下MySQL配置文件不生效的解决方法(超全面!)

    Docker下MySQL配置文件不生效的解决方法(超全面!)

    在Docker中运行MySQL并遇到需要调整配置的情况时,比如想要关闭ONLY_FULL_GROUP_BY的严格模式,我们可以通过以下步骤来实现sql_mode的修改:以下是解决此类问题的步骤和思路,需要的朋友可以参考下
    2024-09-09
  • docker下修改mysql配置文件的方法

    docker下修改mysql配置文件的方法

    这篇文章主要介绍了docker下修改mysql配置文件的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • Docker搭建持续集成平台Jenkins的最简教程分享

    Docker搭建持续集成平台Jenkins的最简教程分享

    Jenkins 是一个广泛使用的开源持续集成工具,它能够自动化构建、测试和部署软件项目,本文我们将使用 Docker 搭建一个基于 Jenkins 的持续集成平台,感兴趣的可以了解下
    2024-03-03
  • 解决docker run 或者 docker restart 启动镜像就自动退出

    解决docker run 或者 docker restart 启动镜像就自动退出

    这篇文章主要介绍了解决docker run 或者 docker restart 启动镜像就自动退出的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 如何使用Docker恢复Mysql8备份的Data数据

    如何使用Docker恢复Mysql8备份的Data数据

    这篇文章主要介绍了使用Docker恢复Mysql8备份的Data数据,下面小编给大家讲解下操作方法,对Docker恢复Mysql数据备份相关知识感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • Docker 命令教程(附中文解释)

    Docker 命令教程(附中文解释)

    这篇文章主要介绍了Docker 命令教程的相关资料,在学习Docker的过程中,特地把所以命令实验了一番并整理,希望大家尽快掌握此部分的知识,有需要的小伙伴可以参考下
    2016-10-10

最新评论