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

640?wx_fmt=png

出品丨Docker公司(ID:docker-cn)

编译丨小东

每周一、三、五晚6点10分  与您不见不散!


说在前面


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


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


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


&


创建索引


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

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


640?wx_fmt=png


添加新文档


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

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" }'@



640?wx_fmt=png


查看索引中的文档


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

curl localhost:9200/customer/_search?pretty


640?wx_fmt=png


将群集升级到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和新的镜像版本。

640?wx_fmt=png


检查我们的索引是否存在


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

curl localhost:9200/customer/_search?pretty


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

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


 

640?wx_fmt=png


升级到三节点群集


现在,让我们进入下一个阶段。我已经创建了 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"

640?wx_fmt=png


点击下列标题,阅读更多干货



如果本文对你有帮助,欢迎分享到朋友圈!获取更多Docker实用技巧,扫描下图二维码!

    640?wx_fmt=png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值