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

简介: 今天,我将带来本系列第三篇文章,用 Docker 探索开源软件 —— Elasticsearch,它将给我们一个机会来看看 docker-compose 是如何运用的。

screenshot

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


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

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

点击下列文章标题,回顾上期文章内容:


创建索引

现在让我们创建一个名为“customer”的索引:

curl -X PUT "localhost:9200/customer?pretty"

添加新文档

让我们给这个索引添加一个文档:

curl -X PUT "localhost:9200/customer/_doc/1?pretty" \
-H 'Content-Type: application/json' -d'{"name": "Mark Heath" }'

顺便说一下,如果您使用 PowerShell 而不是 bash,那么您可以使用 Invoke-RestMethod 来完成同样的事情:

Invoke-RestMethod -Method Put `
-Uri "http://localhost:9200/customer/_doc/1?pretty" `
-ContentType "application/json" -Body @'{"name": "Mark Heath" }'@

查看索引中的文档

有很多方法可以查询 elasticsearch 索引,我建议您查看 elasticsearch 6.4 入门指南(点击文尾处“阅读原文”)了解更多细节。但是,我们可以使用以下方法轻松检索现有客户索引中的文档:

curl localhost:9200/customer/_search?pretty

将群集升级到6.4.2 版本

假设我们现在想要从 Elasticsearch 6.4.2 版本(之前运行的是6.4.1版本)升级集群中的节点。我们所能做的就是用新的容器版本号更新我们的 YAML 文件。

我在这里有一个更新的 YAML 文件(https://gist.githubusercontent.com/markheath/f246ec3aa5a3e7493991904e241a416a/raw/c4fa64575bc854e34a2506291bd14033caf5e9b6/docker-compose-v2.yml)。

您可以下载到本地使用:

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

在升级集群之前,请查看当前使用 docker ps 运行的容器ID。这些容器不会被“升级”——它们将被处理,并创建运行6.4.2版本的新容器。然而,数据是安全的,因为它存储在 volume 中。volume 不会被删除,而是被附加到新的容器上。

您可以使用以下命令进行升级:

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

当它丢弃旧容器并创建新容器时,我们应该看到它说“重新创建 elasticsearch”和“重新创建elasticsearch2”。

现在,如果我们再次运行 docker ps,我们将看到新的容器id和新的镜像版本。


检查我们的索引是否存在

为了确保我们的索引仍然存在,我们可以再次搜索并检查我们的文档是否仍然存在:

curl localhost:9200/customer/_search?pretty

让我们在索引中添加另一个文档:

curl -X PUT "localhost:9200/customer/_doc/2?pretty" -H 'Content-Type: application/json' -d'{"name": "Steph Heath"}'

升级到三节点群集

现在,让我们进入下一个阶段。我已经创建了 docker-composeYAML 文件的第三个版本,它定义了第三个容器,拥有自己的 volume。

这里提供了YAML文件:https://gist.githubusercontent.com/markheath/f246ec3aa5a3e7493991904e241a416a/raw/a2685d1bf0414acbc684572d00cd7c7c531d0496/docker-compose-v3.yml

需要注意的一点是我需要设置 discovery.zen.minimum_master_nodes = 2 环境变量以避免分裂问题。

您可以下载我的示例文件:

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

然后我们可以将集群从两个节点升级到三个节点:

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

环境变量的变化意味着我们需要重新创建 elasticsearch 和 elasticsearch2,当然也会创建新的 elasticsearch3 容器及其 volume。

我们可以检查集群状态,如果一切顺利,我们将看到集群大小为3:

curl http://localhost:9200/_cluster/health?pretty

让我们通过索引中的id检索文档来检查我们的数据是否完整:

curl -X GET "localhost:9200/customer/_doc/1?pretty"
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
Docker 索引 容器
系列教程丨用 Docker 探索开源软件 —— Elasticsearch(三)
今天,我将带来本系列第三篇文章,用 Docker 探索开源软件 —— Elasticsearch,它将给我们一个机会来看看 docker-compose 是如何运用的。
1912 0
|
Docker 索引 容器
系列教程丨用 Docker 探索开源软件 —— Elasticsearch(一)
今天,我将带来本系列第三篇文章,用 Docker 探索开源软件 —— Elasticsearch,它将给我们一个机会来看看 docker-compose 是如何运用的。
5165 0
|
存储 关系型数据库 数据库
系列教程丨用 Docker 探索开源软件 —— PostgreSQL(二)
Docker 的一大优点是可以让您快速使用它来试用应用程序,而无需直接在开发人员的计算机上安装它。如果您不想在自己的计算机上安装 Java 或 erlang 等运行时环境,那么您就可以不安装它们......
2380 0
|
存储 Shell 数据库
系列教程丨用 Docker 探索开源软件 —— PostgreSQL(一)
Docker 的一大优点是可以让您快速使用它来试用应用程序,而无需直接在开发人员的计算机上安装它。如果您不想在自己的计算机上安装 Java 或 erlang 等运行时环境,那么您就可以不安装它们......
2485 0
|
NoSQL Shell Redis
系列教程丨用 Docker 探索开源软件 —— Redis
Docker 的一大优点是可以让您快速使用它来试用应用程序,而无需直接在开发人员的计算机上安装它。如果您不想在自己的计算机上安装 Java 或 erlang 等运行时环境,那么您就可以不安装它们,因为容器封装了所有依赖项......
2228 0
|
Web App开发 监控 关系型数据库
Spring Boot 2.0(六):使用 Docker 部署 Spring Boot 开源软件云收藏
云收藏项目已经开源2年多了,作为当初刚开始学习 Spring Boot 的练手项目,使用了很多当时很新的技术,现在看来其实很多新技术是没有必要使用的,但做为学习案例来讲确实是一个绝佳的 Spring Boot 实践。
2845 0
|
2月前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
258 93
|
18天前
|
网络协议 API Docker
Docker+consul容器服务的更新与发现
通过本文的介绍,我们详细探讨了如何结合Docker和Consul来实现容器服务的更新与发现。通过Consul的服务注册和发现功能,可以高效地管理和监控容器化服务,确保系统的高可用性和可扩展性。希望本文能帮助您在实际项目中更好地应用Docker和Consul,提高系统的可靠性和管理效率。
58 23
|
18天前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
268 15
|
3月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
322 78