一、初步检索
1、_CAT
1)、GET /_cat/nodes
:查看所有节点,比如:http://192.168.56.10:9200/_cat/nodes
127.0.0.1 16 84 0 0.02 0.02 0.05 dilm * 9bc163ddc58e
注:*
表示集群中的主节点
2)、GET /_cat/health
:查看 es 健康状况,比如:http://192.168.56.10:9200/_cat/health
1606116097 07:21:37 elasticsearch green 1 1 3 3 0 0 0 0 - 100.0%
注:green 表示健康值正常
3)、GET /_cat/master
:查看主节点,比如:http://192.168.56.10:9200/_cat/master
9IyzJGJsTv6wsDrtE72x-w 127.0.0.1 127.0.0.1 9bc163ddc58e
4)、GET /_cat/indices
:查看所有索引,等价于 mysql 数据室的 show databases,比如:http://192.168.56.10:9200/_cat/indices
green open .kibana_task_manager_1 cka1TDgRTGer9zZxXqebfw 1 0 2 0 32kb 32kb
green open .apm-agent-configuration MJW7kg4EQjqKw0G2x8KFOA 1 0 0 0 283b 283b
green open .kibana_1 FG4DE-8PSsCoHfvqkW0PhQ 1 0 8 0 35kb 35kb
2、索引一个文档
保存一个数据时,需要指定保存在哪个索引下的哪个类型下,并指定唯一标识 id,比如:PUT customer/external/1
表示在 customer 索引下的 external 类型下保存为标识 id 为 1 的数据,请求数据为:
{
"name":"Andy"
}
我们可以使用 postman 工具来发送请求:
请求操作成功之后会显示 201 Created,返回的数据为:
{
"_index": "customer",
"_type": "external",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
返回的 JSON 数据中,带有下划线开头的,称为元数据,反映了当前的基本信息:
-
_index
:表示该数据在哪个索引/数据库下; -
_type
:表示数据在哪个类型下; -
_id
:表示被保存的数据的 id; -
_version
:表示被保存数据的版本; -
result
:表示结果的执行类型,created 表示创建了一条数据,updated 则表示修改了该数据,同时版本号也会跟着发生变化。
PUT 请求和 POST 请求都可以用于创建和修改数据:
- 请求如果不指定 id 则表示创建新的数据,并且 ES 会自动生成唯一 id,操作类型永远为
created
; - 请求指定了 id 的话,如果 id 对应的数据不存在则会创建该数据,如果存在,则会修改这个数据,并增加版本号;
注意:PUT 请求必须指定 id,不指定 id 会报错(也就是说 PUT 请求不能创建由 ES 自动生成 ID 的数据,只能创建指定 ID 的数据),所以,我们一般用来做修改操作。
下面我们使用 POST 请求来创建不指定 ID 的数据:
# 发送 POST 请求,不指定 id
POST http://192.168.56.10:9200/customer/external/
# 请求数据为
{
"name":"John"
}
# 返回结果
{
"_index": "customer",
"_type": "external",
"_id": "1Agn9HUB2eun-oaTm0LO", # 自动生成的 ID
"_version": 1,
"result": "created", # 操作类型为创建
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 5,
"_primary_term": 1
}
从返回结果可以看出,ES 帮我们自动生成了唯一标识 ID,而且不管相同操作多少次,其结果 ID 都不一样,并且每次都是 Created 操作,版本号 都是 1。
然后我们再使用 PUT 请求来修改数据:
# 修改指定 ID 的数据
PUT http://192.168.56.10:9200/customer/external/1Agn9HUB2eun-oaTm0LO
# 请求数据为
{
"name":"Marry"
}
# 返回结果
{
"_index": "customer",
"_type": "external",
"_id": "1Agn9HUB2eun-oaTm0LO",
"_version": 2, # 版本号增加了 1
"result": "updated", # 操作类型为
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 8,
"_primary_term": 1
}
从返回结果可以看到,该 ID 的数据操作结果为 updated
,版本号也增加了 1 。
3、查看文档
查看的请求方式为:GET /[index]/[type]/[id]
比如:查看索引为 customer,类型为 external,id 为 1 的数据: http://192.168.56.10:9200/customer/external/1
{
"_index": "customer", // 索引
"_type": "external", // 类型
"_id": "1", // 唯一 id
"_version": 1, // 版本号
"_seq_no": 3, // 并发控制字段,每次更新都会+1,用来做乐观锁
"_primary_term": 1, // 同上,主分片重新分配,如重启,就会变化
"found": true, // true 表示检索成功
"_source": { // 数据内容
"name": "Andy"
}
}