【Elasticsearch7.0】之集群初次探索

  |   0 评论   |   0 浏览

rest api

如果你的es已经启动了,那么我们需要知道怎么来使用es。es提供了rest接口,可以直接通过rest请求访问es。那么api可以做哪些事情呢:
1、检查你的集群,节点,索引的健康状况,检查状态和统计数据;
2、管理你的集群,节点,索引数据和元数据;
3、执行CRUD(创建、查询、修改、删除)和对索引进行搜索;
4、执行高级搜索,如分页、排序、过滤、脚本、聚合等等;

集群健康

通过集群健康检查,我们可以查看集群运行情况。可以使用curl或者其他支持HTTP/REST访问的工具。
使用_cat接口检查集群健康状态。使用下面接口:

GET /_cat/health

返回值

1558155845 05:04:05 elasticsearch green 1 1 0 0 0 0 0 0 - 100.0%

也可以使用下面api,可以显示标题。

GET /_cat/health?v

返回值
image.png

我们可以看到“elasticsearch”集群的运行状态是绿色。
一般集群状态会存在三种颜色,分别是绿色,黄色,红色。
1、绿色:一切都好,集群出于最佳状态
2、黄色:所有数据可用,但是一些副本没有分配。集群还是可以用的。
3、红色:一些数据不能用,集群部分可以用。
集群处于红色状态时,只有一部分分片在提供服务,你应该及时去修复那些不可用的分片。
我们看到返回结果里,node.total=1,node.data=1,shards=0,说明里面还没有数据。我们这边启动的集群名字是默认的,所以你在检测健康的时候,可能会发现多个节点,那是因为别人可能也使用了默认的配置启动,所以建议在实际操作中自己定义好集群名字。

参数描述
epoch时间戳,包含年月日时分秒
timestamp时间戳,只包含时分秒
cluster集群名称
status集群状态
node.total总节点数
node.data数据存储节点
shards分片数量
pri主分片数量
relo迁移分片数量
init正在初始化的分片数量
unassign未指定的分片数量
pending_tasks等待中的任务
max_task_wait_time任务最大等待时间
active_shards_percent活跃分片占比

查看节点

我们也可以查看集群下的所有节点

GET /_cat/nodes?v

返回值
image.png
可以看到我们的节点名称是:LAPTOP-F7KM7C74。当前集群下只有一个节点。

参数描述
ipIP地址
heap.percent使用堆的百分比
ram.percent使用总内存百分比
cpucpu使用百分比
load_1m最近1分钟平均负载
load_5m最近5分钟平均负载
load_15m最近15分钟平均负载
node.role节点角色,主节点(m);数据节点(d);预处理节点(i);协调节点(-)
master是否为主节点,*表示主节点,-表示非主节点;
name节点的名称

查看索引

GET /_cat/indices?v

返回值
image.png
表示当前集群下还没有索引。

创建索引

下面让我们来创建一个索引:

PUT /user?pretty

返回值

{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "user"
}

表示创建成功。加上pretty只是为了让返回值以漂亮的json输出。当你在使用curl命令时,该参数比较有用。

接下来再来查询索引,会得到下面的结果:
image.png
可以看到,现在存在一个索引,名字叫user,他有一个主分片和一个副本(默认),当前没有文档,没有稳定被删除。
你可能注意到,当前的索引健康状态是黄色,因为创建索引的时候es默认会创建一个副本,但是副本不能跟当前节点在一起,所以副本其实是没有创建的,只有当第二个节点加入到集群的时候,这个时候会去创建该索引的节点,这时你在执行监控检查,状态就会变成绿色。

参数描述
health健康状态值有绿色、黄色、红色
status状态
index索引名称
uuid唯一标识
pri主分片
rep副本分片
docs.count文档数量,不包含删除的数据
docs.deleted文档删除数量
store.size存储大小
pri.store.size主分片存储大小

创建文档

现在我们在user索引里面加一些数据,

PUT /user/_doc/1
{
"name":"jack"
}

返回值

{
    "_index": "user",
    "_type": "_doc",
    "_id": "1",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 2
}

返回这些数据,表示文档创建成功了。文档的内部id为1,是我们刚才指定的。当然,你在创建文档的时候不一定要先创建索引,因为创建文档的时候如果索引不存在就会自动创建。

查询文档

查询文档接口

GET /user/_doc/1

返回值

{
    "_index": "user",
    "_type": "_doc",
    "_id": "1",
    "_version": 3,
    "_seq_no": 2,
    "_primary_term": 2,
    "found": true,
    "_source": {
        "name": "jack"
    }
}

found为true表示发现数据了,_source表示返回的之前保存进去的数据,以json格式存储。

删除索引

现在我们来删除之前创建的索引。然后在看看索引的列表。

DELETE /user

返回值

{
    "acknowledged": true
}

查询索引列表

GET _cat/indices

返回值
image.png
表示数据已经删除了。

从上面的一些命令上看,可以总结出es的接口语法:

<HTTP Verb> /<Index>/<Endpoint>/<ID>

也可以关注我的公众号:程序之声
图片
关注公众号,领取更多资源

本文为博主原创文章,未经博主允许不得转载。