腾讯云 Elasticsearch 运维篇(十二)API访问ES集群

2020-02-21 22:00:39 浏览数 (1)

前言

上一章节,我们通过腾讯云控制台快速搭建了一个ES集群,通过Kibana我们在公网能进行安全的访问。同时,我们在Kibana里边针对不同的索引需求新建了不同的账户进行登录测试。往往实际情况是我们在腾讯云上有多台主机,多个集群,我们需要通过内网去访问和操作ES集群,所以,今天来讲讲这个问题。

实际案例:比如我是一个IT公司的信息管理人员,我需要买200云上服务器。那么我就会首先找到腾讯云官网,通过自己的账号登录。根据自己的需求选型,最终下单购买。那么服务器购买的过程中,你肯定要考虑这个IP规划的问题。你既要考虑现在的需求、又要考虑后期的扩展与安全设置。请看下图:

云服务网络架构

总结: 从上面这个图里我们应该明白一个VPC标识一个专属私有网络,一个私有网络可以划分为多个子网,每个子网间的服务是连通的。VPC之间需要通过NAT或者专门的V**网管才能实现跨VPC访问。

解决了网络问题,我们继续说API访问ES集群。腾讯云 ES 构建在用户 VPC 内,用户可以通过位于同一 VPC 下的 CVM 作为客户端,访问 ES 集群。要连接ES集群,首先要知道ES集群的内网IP。

一、查看ES集群的内网地址

在控制台-集群列表页,单击【集群 ID】进入详情页,在基础配置中可查看内网地址。我这里IP是:10.1.0.7:9200

查看ES集群内部IP

二、构建CVM(云主机)

在自己构建的VPC里找一台云主机,如果没有,就新购一台云主机(CVM)。这里的IP为:10.1.0.14,与ES内网IP同网段

云主机IP

三、连接ES集群IP

因为我们是用云主机来测试ES集群的连通性,所以,我们就要用到Curl命令,那么我们使用Curl命令来操作测试ES集群。注意:可以通过 curl 的方式测试访问集群,但不支持通过 ping 的方式测试连通性。

第一步:测试服务是否可以访问:命令如下:curl -XGET http://10.1.0.7:9200 图示:

错误提示

提示需要安全认证,因为我们的版本为6.8.2白金版,其访问集群的时候需要用户认证。所以,使用如下命令来登录:

执行 curl -XGET -u elastic http://10.1.0.7:9200 命令,然后按要求提示输入密码即可。如下图:

Curl密码登录

返回结果:ES集群访问成功

Curl返回结果

当然,Curl口令默认参数就是-XGET,所以不用带,而且,"-u"参数也可以放到最后,所以,上面的命令也可以这样:

Curl命令认证使用

返回的结果跟上面一致:如下

curl 返回结果

四、基于CVM下来操作ES集群

第一:查看集群状态API选项 curl http://10.1.0.7:9200/_cat -u elastic

_cat API

第二:查看节点信息

使用命令: curl http://10.1.0.7:9200/_cat/nodes?v -u elastic ”-v“是现实详细信息

现实集群详细信息

第三. 查看master节点信息

curl http://10.1.0.7:9200/_cat/master?v -u elastic master一般用”*“作标识。

Master信息

第四、查看集群的健康状态

curl http://10.1.0.7:9200/_cat/health?v -u elastic

集群状态

可以看到我们的集群叫做"es-*",并且状态是绿色。无论何时我们去请求集群的健康状态我们会得到三种:green, yellow, red

  • green 意味着所有功能都是完好的
  • yellow 意味着所有数据是可用的,但是一些副本还没有被分配
  • red 代表一些数据由于某些原因已经不可用。注意,尽管一个集群是red状态,它仍然可以提供部分服务(比如,它会继续从可用的切片数据里搜索),但是在你失去部分数据后,你需要尽你最快的速度去修复它。

集群状态说明:

集群状态是反映集群是否在变更中或正常使用的状态,包括:正常、处理等,具体含义如下:

集群状态的含义

其中健康状态是 ES 集群众多监控信息中非常重要的一个,用来表征集群总体上是否工作正常。健康状态种类如下:

集群健康状态

第五:创建索引

curl -XPUT 比如:创建一个"test_hezhen"的索引 使用命令:curl -XPUT http://10.1.0.7:9200/test_hezhen?pretty -u elastic

CURL创建一个索引

第六:查看索引

curl 'http://10.1.0.7:9200/_cat/indices?v' -u elastic

查看索引

查看某一个索引使用如下命令:

curl -XGET 'http://10.1.0.7:9200/test_one/doc/_search?pretty' -H 'Content-Type: application/json' -u elastic

索引查询

第七:删除索引

删除索引

第八:创建文档

有两种方法:

1. 使用PUT来创建文档,需要指定id

curl -XPUT "http://10.1.0.7:9200/test_one/doc/1?pretty" -H "Content-Type: application/json" -d '{"name": "john", "age": 30}' -u elastic

创建文档

2. 使用POST来创建文档,可以不指定id(不指定时随机生成id)

curl -XPOST "http://10.1.0.7:9200/test_one/doc?pretty" -H "Content-Type: application/json" -d '{"name": "david", "age": 20}' -u elastic

创建文档

第九、 查看文档

curl http://10.1.0.7:9200/test_one/doc/1?pretty -u elastic 如下图

查看文档

或者curl http://10.1.0.7:9200/test_one/doc/_search?pretty -u elastic 如下图:

_search API

第十、替换或者更新文档

使用PUT并指定id时,es会使用新的文档替换原文档,如下:

curl -XPUT "http://10.1.0.7:9200/test_one/doc/1?pretty" -H "Content-Type: application/json" -d '{"name": "AAA", "age": 38}' -u elastic

替换或者更新文档

已经替换,再查看确认一下 curl "http://10.1.0.7:9200/test_one/doc/1?pretty" -u elastic

更新文档

文档替换成功。

第十一、删除文档

curl -XDELETE "http://10.1.0.7:9200/test_one/doc/1?pretty" -u elastic 如下图

删除文档

总结:

本节模拟CVM内网环境下如何通过去管理ES6.8白金版集群,并实现了对集群文档的CRUD,以及搜索等内容。CURL指令非常有效率的执行维护工作。有几点要注意:

1,elastic用户是系统默认的授权用户。

2,在通过公网登录Kibana去访问ES,有一定时间限制。如超过一定时间需要重新登录Kibana,否则会报认证错误。

3,执行curl 认证的登录ES的时候不需要把密码直接输入在控制台上。需要密文输入。否则报错。

0 人点赞