【云原生】Docker 部署 Elasticsearch 9 操作详解
目录
一、前言
二、Elasticsearch 9 新特性介绍
2.1 基于 Lucene 10 重大升级
2.2 Better Binary Quantization(BBQ)
2.3 Elastic Distributions of OpenTelemetry(EDOT)
2.4 LLM 可观测性
2.5 攻击发现与自动导入
2.6 ES|QL 增强
2.7 语义检索
三、基于Docker部署Elasticsearch 9
3.1 Elasticsearch 搭建方式一
3.1.1 创建docker网络
3.1.2 获取es9镜像
3.1.3 启动 es容器
3.2 搭建kibana过程
3.3 创建es访问账户和密码
3.4 为kibana创建访问es 的token令牌
3.5 生成访问kibana的验证码
3.6 访问kibana
3.7 搭建方式2
3.7.1 启动容器
3.7.2 拷贝容器内部的文件
3.7.3 文件授权
3.7.4 移除镜像
3.7.5 重启es容器
3.7.6 修改es配置参数
3.7.7 启动kibana容器
3.7.8 拷贝容器内的文件
3.7.9 文件目录授权
3.7.10 创建kibana账户
3.7.11 修改容器外挂载目录中的kibana.yml
3.7.12 重启kibana容器
四、写在文末
一、前言
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 的详细搭建过程,希望对看到的同学有用哦,本篇到此结束,感谢观看。