系列教程丨用 Docker 探索开源软件 —— Elasticsearch(一)

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 今天,我将带来本系列第三篇文章,用 Docker 探索开源软件 —— Elasticsearch,它将给我们一个机会来看看 docker-compose 是如何运用的。

screenshot

出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五,与您不见不散!


Docker 的一大优点是可以让您快速使用它来试用应用程序,而无需直接在开发人员的计算机上安装它。如果您不想在自己的计算机上安装 Java 或 erlang 等运行时环境,那么您就可以不安装它们,因为容器封装了所有依赖项,并在删除时可以不留下任何痕迹。今天,我将带来本系列第三篇文章,用 Docker 探索开源软件 —— Elasticsearch,它将给我们一个机会来看看 docker-compose 是如何运用的。

注:为了理解本教程中的命令,我建议您使用 Play with Docker,它可以让您在浏览器中运行文章中涉及到的所有命令。

点击下列文章标题,回顾本系列文章的往期内容:


启动一个运行 Elasticsearch 的新容器

如果您只想尝试在单节点中运行 Elasticsearch,那么我们可以使用下面所示的“docker run”命令来实现。

我们公开了 9200 端口(用于 REST API),并使用官方的 elasticsearch 6.4.2 镜像(点击文尾处“阅读原文”下载该镜像)设置单节点集群(使用环境变量)。我还将展示如何使用 volume 来存储索引数据。

docker run -d -p 9200:9200 -e "discovery.type=single-node" \
-v esdata:/usr/share/elasticsearch/data \
docker.elastic.co/elasticsearch/elasticsearch:6.4.2

我们用“curl”运行的所有 Elasticsearch 命令在这个容器上都可以正常工作。但是对于本教程,我将使用“docker-compose”来创建集群。


使用 Docker Compose 创建 Elasticsearch 集群

使用docker-compose,我们可以以YAML格式声明构成应用程序的所有容器。对于每个容器来说,我们还可以配置其应该设置的环境变量、所需的任何 volume 以及定义允许服务相互通信的网络。

如下所示,这是 docker-compose.yml 文件的第一个版本。它定义了一个简单的双节点集群,集群中的每个节点都有一个 volume,这样我们的索引就可以独立于容器而存在,并且可以在升级后继续存在(稍后我们将进行升级)。请注意,我们正在使用的是 Elasticsearch 6.4.1版本。

version: '2.2'
services:
 elasticsearch:
   image: docker.elastic.co/elasticsearch/elasticsearch:6.4.1
   container_name: elasticsearch
   environment:
     - cluster.name=docker-cluster
     - bootstrap.memory_lock=true
     - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
   ulimits:
     memlock:
       soft: -1
       hard: -1
   volumes:
     - esdata1:/usr/share/elasticsearch/data
   ports:
     - 9200:9200
   networks:
     - esnet
 elasticsearch2:
   image: docker.elastic.co/elasticsearch/elasticsearch:6.4.1
   container_name: elasticsearch2
   environment:
     - cluster.name=docker-cluster
     - bootstrap.memory_lock=true
     - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
     - "discovery.zen.ping.unicast.hosts=elasticsearch"
   ulimits:
     memlock:
       soft: -1
       hard: -1
   volumes:
     - esdata2:/usr/share/elasticsearch/data
   networks:
     - esnet
 
volumes:
 esdata1:
   driver: local
 esdata2:
   driver: local
 
networks:
 esnet:

要在本地下载该 compose 文件作为 docker-compose-v1.yml,您可以使用以下命令:

curl https://gist.githubusercontent.com/markheath/f246ec3aa5a3e7493991904e241a416a/raw/c4fa64575bc854e34a2506291bd14033caf5e9b6/docker-compose-v1.yml > docker-compose-v1.yml

现在我们可以使用“docker-compose up”命令启动容器,并创建所有必要的资源,如网络和 volume。 我们使用“-d”让其在后台运行,就像我们使用“docker run”一样:

docker-compose -f docker-compose-v1.yml up -d

检查群集运行状况

我们在其中一个容器上公开了 9200 端口,允许我们使用以下请求来查询集群运行状况:

curl http://localhost:9200/_cluster/health?pretty
相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
JSON Linux 数据格式
百度搜索:蓝易云【Centos 7 通过 targz 文件安装 Elastic Search 服务教程!】
请注意,本教程提供了基本的安装步骤,并且可以根据实际需求进行定制和配置。如果需要更深入的了解和配置,请参考Elasticsearch官方文档或其他权威资源。
385 0
|
自然语言处理 API 索引
ElasticSearch实战教程PostMan版(超级详细版)
ElasticSearch实战教程PostMan版(超级详细版)
ElasticSearch实战教程PostMan版(超级详细版)
|
2月前
|
运维 Devops 持续交付
揭秘 Docker 自动部署神器 Websoft9:热门开源软件一键部署
在企业IT建设中,软件部署常面临效率低、易出错等问题。通过Docker与自动化工具,可实现高效、标准化和可追溯的部署流程,提升企业应用交付效率,降低运维门槛,助力中小企业实现自动化部署。
167 5
揭秘 Docker 自动部署神器 Websoft9:热门开源软件一键部署
|
6月前
|
安全 Java Linux
Linux安装Elasticsearch详细教程
Linux安装Elasticsearch详细教程
890 1
|
Java Linux 数据安全/隐私保护
百度搜索:蓝易云【centos7系统安装elasticsearch8.7.0,并设置密码访问教程。】
现在,您已经成功安装并设置密码访问Elasticsearch 8.7.0。您可以使用设置的密码来访问和管理Elasticsearch实例。
302 1
|
自然语言处理 关系型数据库 定位技术
分布式系列教程(35) -ElasticSearch文档映射
分布式系列教程(35) -ElasticSearch文档映射
121 0
|
JSON 自然语言处理 数据格式
分布式系列教程(33) -ElasticSearch DSL语言查询与过滤
分布式系列教程(33) -ElasticSearch DSL语言查询与过滤
275 0
分布式系列教程(32) -ElasticSearch条件查询
分布式系列教程(32) -ElasticSearch条件查询
244 0
|
自然语言处理 搜索推荐 索引
分布式系列教程(31) -ElasticSearch倒排索引
分布式系列教程(31) -ElasticSearch倒排索引
155 0
|
网络协议 Java Maven
分布式系列教程(30) -SpringBoot整合ElasticSearch
分布式系列教程(30) -SpringBoot整合ElasticSearch
121 0