使用Docker创建Elasticsearch服务

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介:

最近需要做的几个功能都是基于Elasticsearch,但又不想污染系统环境,所以就花了些时间研究下如何使用Docker创建Elastcisearch服务。

首先先分别了解下Docker和Elasticssearch。

Docker是什么?

Docker是一个开源工具,能将一个WEB应用封装在一个轻量级,便携且独立的容器里,然后可以运行在几乎任何服务环境下。
Docker的容器能使应用跑在任何服务器上并且表现一致。一个开发者在笔记本上建立的一个容器,能跑在很多环境下,如:测试环境,生产环境,虚拟机上,VPS,OpenStack集群,公用的电脑等等
Docker的一般使用在以下几点:
• 自动化打包和部署应用
• 创造一个轻量级的,私人的 PAAS 环境
• 自动化测试和连续的 整合/部署
• 部署WEB应用,数据库和后端服务

所以,Docker是一个系统级兼容的容器,它采用Linux Container技术构建一个虚拟环境,用户可以在这个环境下安装各种应用来提供服务,并且这个环境可以随时创建或销毁,不会影响宿主环境

Elasticsearch是什么?

Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:
• 分布式的实时文件存储,每个字段都被索引并可被搜索
• 分布式的实时分析搜索引擎
• 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

总之,ES是一个牛逼的搜索存储引擎

安装Docker

Mac上安装Docker很简单,基本跟着官网的引导就可以顺利安装了,完成后确保Docker已启动,如下图

创建Docker 镜像

Elasticsearch官方在Docker Hub上已经有提供镜像,如果没有额外需求,执行下面这个命令就可以直接使用Elasticsearch官方提供的镜像:

docker run -d -p 9200:9200 --name="es" elasticsearch:2.3.5

但我还想额外装一个Elasticsearch的插件,方便调适,所以就自己做了一个镜像, Dockerfile

FROM elasticsearch:2.3.5

RUN /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head

EXPOSE 9200

进入Dockerfile所在的文件夹,执行以下命令:

docker build --tag=es_ezio:2.3.5 .

然后执行

docker ps

就能看到刚才创建的镜像了

启动容器及服务

上一步我们只是制作了一个Docker镜像,还没有创建Docker容器。关于Docker中镜像和容器的关系,可以类比为操作系统中的程序和进程,或者面向对象语言中的Class和Instance。我们必须从镜像创建出容器才能运行我们的服务(也就是Elasticsearch服务)。

第一次创建Docker容器,执行以下命令:

docker run -d -p 9200:9200 --name="es_ezio" es_ezio:2.3.5

Elasticsearch的默认端口是9200,我们把宿主环境9200映射到Docker容器中的9200端口,这样我们就可以直接访问宿主环境的9200端口就可以访问到Docker容器中的Elasticsearch服务了,同时我们把这个容器命名为es_ezio。

如果一切顺利,访问 http://127.0.0.1:9200/_plugin/head/

这样,我们就完成了用Docker提供Elasticsearch服务,而不污染宿主机环境了,这样还有一个好处,如果想同时启动多个不同版本的Elastcsearch或者其他服务,Docker也是一个理想的解决方案。

总结

Docker主要是面向运维部署,但其实对开发人员来说也是一个不错的playground,后续我的个人服务会尽量都采用Docker的方式部署。
Elastic search是一个功能强大的搜索存储引擎,特别是它强大的全文搜索能力,要好好研究下。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
243 5
|
存储 API 数据库
检索服务elasticsearch索引(Index)
【8月更文挑战第23天】
593 6
|
9月前
|
NoSQL MongoDB 数据库
使用 docker 快速搭建开发环境的 mongodb 服务
本指南介绍如何使用 Docker 和 Docker Compose 部署 MongoDB 和 Mongo Express。首先,通过 Docker 命令分别启动 MongoDB(镜像 `mongo:7.0.14`)和 Mongo Express(镜像 `mongo-express:1.0.2-20-alpine3.19`),并配置环境变量确保两者能正确连接。接着,提供了一个 `docker-compose.yaml` 文件示例,包含 MongoDB 数据卷、健康检查及服务依赖配置,简化多容器管理。
1379 2
|
10月前
|
Linux Docker 容器
Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?
在 Linux 系统中,停止 Docker 服务时遇到警告无法彻底停止的问题,可以通过系统管理工具停止服务、强制终止相关进程、检查系统资源和依赖关系、以及重置 Docker 环境来解决。通过以上步骤,能够有效地排查和解决 Docker 服务停止不彻底的问题,确保系统的稳定运行。
670 19
|
8月前
|
存储 机器学习/深度学习 人工智能
Elasticsearch:使用阿里云 AI 服务进行向量化和重新排名
本文介绍了如何将阿里云 AI 功能与 Elasticsearch 集成,以提高语义搜索的相关性。
452 0
|
JSON Java 网络架构
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
这篇文章介绍了如何使用Spring Boot整合REST方式来搭建和操作Elasticsearch服务。
344 4
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
|
负载均衡 应用服务中间件 网络安全
docker swarm添加更多的服务
【10月更文挑战第16天】
163 6
|
Docker 容器
docker swarm启动服务并连接到网络
【10月更文挑战第16天】
265 5
|
负载均衡 网络协议 关系型数据库
docker swarm 使用网络启动服务
【10月更文挑战第15天】
215 4
|
Docker 容器
docker swarm 在服务中使用网络
【10月更文挑战第14天】
289 2

热门文章

最新文章