Docker 安装 Elasticsearch 8.x

Docker 安装 Elasticsearch 8.x

  • 前言
  • 一、准备工作
  • 二、设置容器的目录结构
  • 三、启动一个临时的容器来复制配置文件
  • 四、复制配置文件到本地目录
  • 五、删除临时容器
  • 六、创建并运行容器,挂载本地目录
  • 七、修改文件配置监听端口
  • 八、端口配置:Host 网络模式 vs Port 映射模式
    • 1. Host 网络模式
    • 2. Port 映射模式
  • 九、查看日志和检查容器状态
  • 十、访问服务
  • 十一、Elasticsearch 常用操作命令


前言

在现代应用架构中,Elasticsearch 是一款强大的分布式搜索引擎,广泛应用于日志分析、实时搜索、数据可视化等场景。通过 Docker 部署 Elasticsearch,可以快速搭建、灵活扩展,并与容器化平台无缝集成。

本文将详细介绍如何使用 Docker 安装和配置 Elasticsearch 8.x,包括目录结构设置、配置文件管理、容器启动与管理、端口配置、日志查看、服务访问等内容,帮助你快速搭建一个高效、可维护的 Elasticsearch 环境。

在这里插入图片描述


一、准备工作

首先,确保你的系统上已经安装了 Docker。

Linux上进行Docker安装有两种方式:

  1. Docker自动化安装
  2. Docker手动安装

可以根据该文章的步骤进行安装:https://blog.csdn.net/weixin_44876263/article/details/136714078?spm=1001.2014.3001.5502

二、设置容器的目录结构

为了持久化存储日志、数据、配置和插件,需要在宿主机上创建对应目录,并赋予 Elasticsearch 容器内部用户的写权限。

# 安装路径
DIR="/opt/docker/demo"
DOCKER_NAME="docker-elasticsearch"# 创建目录结构
mkdir -p "$DIR/elasticsearch/logs"
mkdir -p "$DIR/elasticsearch/data"
mkdir -p "$DIR/elasticsearch/config"
mkdir -p "$DIR/elasticsearch/plugins"# 赋予文件权限
chmod -R 777 $DIR/elasticsearch/

三、启动一个临时的容器来复制配置文件

启动一个临时的 Elasticsearch 容器,用于复制默认配置文件到宿主机。

docker run -d \--restart=always \--name elasticsearch \--network host \-p 9388:9200 \-p 9389:9300 \--privileged \-e "discovery.type=single-node" \-e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \docker.elastic.co/elasticsearch/elasticsearch:8.17.0

四、复制配置文件到本地目录

将容器中的配置文件复制到宿主机的对应目录。

docker cp elasticsearch:/usr/share/elasticsearch/data $DIR/elasticsearch/
docker cp elasticsearch:/usr/share/elasticsearch/plugins $DIR/elasticsearch/
docker cp elasticsearch:/usr/share/elasticsearch/config $DIR/elasticsearch/
docker cp elasticsearch:/usr/share/elasticsearch/logs $DIR/elasticsearch/

五、删除临时容器

docker stop elasticsearch
docker rm elasticsearch

六、创建并运行容器,挂载本地目录

使用以下命令启动 Elasticsearch 容器,并挂载本地目录。

docker run -d \--name "$DOCKER_NAME" \--restart=always \--network host \-v "$DIR/elasticsearch/data:/usr/share/elasticsearch/data" \-v "$DIR/elasticsearch/plugins:/usr/share/elasticsearch/plugins" \-v "$DIR/elasticsearch/config:/usr/share/elasticsearch/config" \-v "$DIR/elasticsearch/logs:/usr/share/elasticsearch/logs" \-e "discovery.type=single-node" \-e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \-e "ELASTIC_PASSWORD=123456" \docker.elastic.co/elasticsearch/elasticsearch:8.17.0

七、修改文件配置监听端口

修改配置文件 $DIR/elasticsearch/config/elasticsearch.yml

cluster.name: "docker-cluster"network.host: 0.0.0.0http.port: 9200

八、端口配置:Host 网络模式 vs Port 映射模式

1. Host 网络模式

docker run -d \--restart=always \--name "$DOCKER_NAME" \--network host \-v "$DIR/elasticsearch/data:/usr/share/elasticsearch/data" \-v "$DIR/elasticsearch/plugins:/usr/share/elasticsearch/plugins" \-v "$DIR/elasticsearch/config:/usr/share/elasticsearch/config" \-v "$DIR/elasticsearch/logs:/usr/share/elasticsearch/logs" \-e "discovery.type=single-node" \-e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \-e "ELASTIC_PASSWORD=123456" \docker.elastic.co/elasticsearch/elasticsearch:8.17.0
  • 特点

    在 Host 网络模式下,容器共享宿主机的网络栈,容器内的网络接口直接映射到宿主机的网络接口。​这意味着容器可以使用宿主机的 IP 地址和端口进行通信。​对于 Elasticsearch 来说,使用 Host 网络模式可以减少网络延迟,提高性能。

  • 优点

    • 简化网络配置,无需额外的 -p 端口映射。

    • 延迟更低,吞吐更高。

  • 缺点

    • 与宿主机完全共享端口,若宿主机已有同端口服务运行,会冲突。

    • 安全隔离较弱,容器网络直接暴露给宿主机。

2. Port 映射模式

docker run -d \--restart=always \--name "$DOCKER_NAME" \-p 9201:9200 \-p 9301:9300 \-v "$DIR/elasticsearch/data:/usr/share/elasticsearch/data" \-v "$DIR/elasticsearch/plugins:/usr/share/elasticsearch/plugins" \-v "$DIR/elasticsearch/config:/usr/share/elasticsearch/config" \-v "$DIR/elasticsearch/logs:/usr/share/elasticsearch/logs" \-e "discovery.type=single-node" \-e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \-e "ELASTIC_PASSWORD=123456" \docker.elastic.co/elasticsearch/elasticsearch:8.17.0
  • 特点

    在 Port 映射模式下,容器使用 Docker 的默认桥接网络,容器内的端口通过宿主机的端口进行映射。​这种方式适用于需要将容器服务暴露给外部访问的场景。​例如,将容器的 9200 端口映射到宿主机的 9201 端口。

  • 优点

    • 容器与宿主机网络隔离,提高安全性。

    • 可以在同一宿主机上运行多个容器,避免端口冲突。

  • 缺点

    • 可能增加网络延迟,影响性能。

    • 需要手动配置端口映射,增加配置复杂度。

九、查看日志和检查容器状态

使用以下命令查看 Elasticsearch 容器的日志:

docker logs -f "$DOCKER_NAME"

要查看容器的状态,可以使用:

docker ps -a

如果容器未运行,可以使用以下命令启动:

docker start "$DOCKER_NAME"

十、访问服务

在浏览器中访问以下地址,检查 Elasticsearch 是否正常运行
默认的用户名为:elastic
密码:123456

http://localhost:9200

如果使用了 Port 映射模式,并将容器的 9200 端口映射到宿主机的 9201 端口,则应访问:

http://localhost:9201

应该看到类似以下的 JSON 响应:

{"name" : "docker-cluster","cluster_name" : "docker-cluster","cluster_uuid" : "abcdefghijklmno","version" : {"number" : "8.17.0","build_flavor" : "default","build_type" : "deb","build_hash" : "1234567890abcdef","build_date" : "2025-04-15T12:34:56.789Z","build_snapshot" : false,"lucene_version" : "8.10.0","minimum_wire_compatibility_version" : "7.10.0","minimum_index_compatibility_version" : "7.10.0"},"tagline" : "You Know, for Search"
}

在这里插入图片描述

十一、Elasticsearch 常用操作命令

  1. 检查集群健康状态

    使用以下命令检查 Elasticsearch 集群的健康状态:

    curl -X GET "localhost:9200/_cluster/health?pretty"
    
  2. 查看所有索引

    使用以下命令检查 Elasticsearch 集群的健康状态:

    curl -X GET "localhost:9200/_cat/indices?v"
    
  3. 创建索引

    使用以下命令创建一个新的索引:

    curl -X PUT "localhost:9200/my_index"
    
  4. 删除索引

    使用以下命令删除指定的索引:

    curl -X DELETE "localhost:9200/my_index"
    
  5. 查询索引中的所有文档

    使用以下命令查询索引中的所有文档:

    curl -X GET "localhost:9200/my_index/_search?q=*:*
    
  6. 修改用户密码

    Elasticsearch 提供了 elasticsearch-reset-password 工具,用于重置用户密码。​例如,重置 elastic 用户的密码:

    docker exec -it elasticsearch bin/elasticsearch-reset-password -u elastic
    

    执行后,系统将提示输入新密码并确认。​请确保在生产环境中妥善保管密码。

  7. 查看集群节点信息

    curl -X GET "localhost:9200/_cat/nodes?v"
    
  8. 查看集群分片分配情况

    curl -X GET "localhost:9200/_cat/shards?v"
    
  9. 查看集群所有分配情况

    curl -X GET "localhost:9200/_cat/allocation?v"
    
  10. 查看索引文档数量

    curl -X GET "localhost:9200/my_index/_count"
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#: 用Libreoffice实现Word文件转PDF

现实场景中要实现Word格式转PDF格式还是比较常见的。 如果要用开源的组件,只有用Libreoffice了。 一、下载安装Libreoffice 先进入如下链接,找到最新版本和匹配的操作系统来安装。 官网试过,下载是能下载,但安装了用不了&…

MoogDB数据库日常维护技巧与常见问题解析

在当今的数据驱动世界中,数据库作为信息存储与管理的核心组件,扮演着举足轻重的角色。MoogDB作为一款高性能、易扩展的数据库解决方案,越来越受到开发者和企业的青睐。为了确保MoogDB的稳定性与高性能,定期的日常维护及对常见问题…

JAVA多线程的几种实现方式

‌1. 继承 Thread 类‌ ‌原理‌:通过继承 Thread 类并重写 run() 方法定义线程任务,调用 start() 启动线程‌。‌代码示例‌: public class MyThread extends Thread {Overridepublic void run() {System.out.println("线程 " g…

爬虫(基本知识介绍,urllib库的说明)

爬虫 爬虫基础(一些基本原理的梳理) scheme://[username:password]hostname[:port][/path][;parameters][?query][#fragment] 注: parameters 和 query 混用,并且现在 query 用的多 ?query 查询 ,用来查询某类资源…

探秘串口服务器厂家:背后的故事与应用

在科技飞速发展的今天,串口服务器作为连接串口设备与网络的桥梁,在工业自动化、智能交通、智能家居等众多领域发挥着关键作用。你是否好奇,那些生产串口服务器的厂家究竟有着怎样的故事?它们的产品背后又蕴含着怎样的原理呢&#…

工厂能耗系统智能化解决方案 —— 安科瑞企业能源管控平台

安科瑞顾强 政策背景与“双碳”战略驱动 2025年《政府工作报告》明确提出“单位国内生产总值能耗降低3%左右”的目标,要求通过产业结构升级(如高耗能行业技术革新或转型)、能源结构优化(提高非化石能源占比)及数字化…

BI面向模型开发和面向报表开发,有什么区别?

在数字化时代,商业智能(BI)已成为企业决策不可或缺的工具。BI项目实施时,通常有两种开发模式:面向模型开发和面向报表开发。虽然两者都旨在通过数据驱动决策,但在开发逻辑、目标价值和技术路径上存在显著差…

OpenHarmony人才认证证书

OpenHarmony人才认证体系目前支持初级工程师认证,要求了解OpenHarmony开源项目、生态进展及系统移植等基础知识,熟练掌握OpenHarmony的ArkUI、分布式软总线、分布式硬件、分布式数据管理等基础能力使用,具备基础的开发能力。 考试流程可参考O…

映射网络路路径和ftp路径原理是什么,如何使用,有什么区别

文章目录 一、原理1. 映射网络路径2. FTP路径 二、使用方法1. 映射网络路径2. FTP路径 三、主要区别1. 协议与功能2. 安全性与权限3. 适用场景 四、如何选择?五、注意事项 映射网络路径(如SMB/CIFS或NFS)和FTP路径(FTP/FTPS/SFTP&…

Windows 图形显示驱动开发-WDDM 1.2功能—Windows 8 中的 DirectX 功能改进(一)

Windows 8包括 Microsoft DirectX 功能改进,使开发人员、最终用户和系统制造商受益。 功能改进在以下几个方面: 像素格式 (5551、565、4444) :在低功耗硬件配置下,DirectX 应用程序的性能更高。双精度着色器功能:高级…

GitHub 趋势日报 (2025年04月15日)

本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1yeongpin/cursor-free-vip[Support 0.48.x](Reset Cursor AI MachineID & Auto Sign Up / In & Bypass Higher…

2025年推荐使用的开源大语言模型top20:核心特性、选择指标和开源优势

李升伟 编译 随着人工智能技术的持续发展,开源大型语言模型(LLMs)正变得愈发强大,使最先进的AI能力得以普及。到2025年,开源生态系统中涌现出多个关键模型,它们在各类应用场景中展现出独特优势。 大型语言…

回收镀锡废水的必要性(笔记)

镀锡废水若直接排放,将对环境、经济和社会造成多重危害,其回收处理具有迫切性和深远意义。以下从环境、资源、法规、技术与实践、可持续发展五大维度展开分析: 一、环境危害的紧迫性:重金属与污染物的致命威胁 成分复杂&#xf…

14.2 - VDMA彩条显示实验之动态时钟

文章目录 1 实验任务2 系统框图3 硬件设计4 软件设计4.1 dynclk_api.h文件4.2 math_compat.h文件4.3 dynclk_api.c文件4.4 main.c文件 1 实验任务 参见14.1。 2 系统框图 参见14.1。 3 硬件设计 注意事项:基于14.1做如下改动 使能Clocking Wizard IP核的Dynam…

在边缘端进行tensorflow模型的部署(小白初探)

1.配置tensorflow的环境 (我是安装GPU版本的) 建议参考这个博主的文章,确实非常快速! 十分钟安装Tensorflow-gpu2.6.0本机CUDA12 以及numpymatplotlib各包版本协调问题_tensorflow cuda12-CSDN博客 2.学习自制数据集 &#xf…

windows下使用nginx + waitress 部署django

架构介绍 linux一般采用nginx uwsgi部署django,在Windows下,可以取代uwsgi的选项包括Waitressa、Daphnea、Hypercoma和Gunicorna(通过WSLa 运行)。windows服务器一般采用nginx waitress 部署django,,他们的关系如下 django是WEB应用…

利用pnpm patch命令实现依赖包热更新:精准打补丁指南

需求场景 在Element Plus的el-table组件二次开发中,需新增列显示/隐藏控件功能。直接修改node_modules源码存在两大痛点: 团队协作时修改无法同步 依赖更新导致自定义代码丢失 解决方案选型 通过patch-package工具实现: 📦 非…

ThinkPad T520 无法读到硬盘 问题排查思路

错误提示:2100:detection error on hdd0(Main hdd) 1、判断错误提示含义 表示电脑在启动时无法检测到主硬盘(HDD0)。 2、 常见原因: 硬盘松动或接触不良 → 特别是笔记本在移动或震动后,硬盘排线松了。 硬盘损坏 →…

Doris部署生产集群最低要求的部署方案

Doris生产集群最低部署方案(2025年4月版) 一、节点规划与数量 1. FE节点(Frontend) 数量:至少 3个节点(1个Follower 2个 Observer),确保高可用(HA)。角色分…

游戏引擎学习第227天

今天的计划 今天的工作重点是进行吸引模式(attract mode)的开发,主要是处理游戏的进出和其他一些小的细节问题,这些是之前想要整理和清理的部分。我做了一些工作,将游戏代码中的不同部分分离到逻辑上独立的区域&#…