所有的REST命令都可以在 Kibana 7.6.1的dev_tools工具上正常运行
主要内容:检查集群的健康状态,简单的索引操作,简单的CRUD文档操作,以及判定文档是否存在
1、检查ES是否启动成功
GET ?pretty
2、检查集群的健康状态
GET /_cat/health?v
GET _cluster/health
3、查看集群中有哪些索引
GET /_cat/indices?v
4、简单的索引操作
创建索引:PUT /ecommerce?pretty
删除索引:DELETE /ecommerce?pretty
关闭索引:POST /ecommerce/_close
打开索引:POST /ecommerce/_open
在 7.0 以及之后的版本中 Type 被废弃了。一个 index 中只有一个默认的 type,即
_doc
。ES 的Type 被废弃后,库表合一,Index 既可以被认为对应 MySQL 的 Database,也可以认为对应 table。
5、简单的CRUD操作
5.1 创建文档
全量替换:指定ID
- 一般来说,是从某些其他的系统中,导入一些数据到es时,会采取这种方式
- document是不可变的,如果要修改document的内容,第一种方式就是全量替换,直接对document重新建立索引,替换里面所有的内容
- es会将老的document标记为deleted,然后新增我们给定的一个document,当我们创建越来越多的document的时候,es会在适当的时机在后台自动删除标记为deleted的document
PUT /index/_doc/id ##POST方法也适用
{
"json数据"
}
强制创建:(防止覆盖)
创建文档时,不想替换id已存在的文档,可以通过_create加以限制,如下
PUT /index/_create/id
{
"json数据"
}
第三种格式:(自动生成ID)
需要使用POST方法,而不是PUT方法。
自动生成的id,长度为20个字符,URL安全,base64编码,GUID,分布式系统并行生成时不可能会发生冲突
POST /index/_doc
{
"json数据"
}
创建示例01(全量替换)
PUT /ecommerce/_doc/1
{
"name": "gaolujie yagao",
"desc": "gaoxiao meibai",
"price": 30,
"producer": "gaolujie producer",
"tags": [
"meibai",
"fangzhu"
]
}
创建示例02(强制创建)
PUT /ecommerce/_create/2
{
"name": "jiajieshi yagao",
"desc": "youxiao fangzhu",
"price": 25,
"producer": "jiajieshi producer",
"tags": [
"fangzhu"
]
}
## 该文档如果存在,添加失败。
创建示例03(自动生成ID)
POST /ecommerce/_doc
{
"name": "zhonghua yagao",
"desc": "caoben zhiwu",
"price": 40,
"producer": "zhonghua producer",
"tags": [
"qingxin"
]
}
5.2 查看文档
查看格式
GET /index/type/id
查看示例
GET /ecommerce/_doc/1
查询返回的值
{
"_index" : "ecommerce",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "gaolujie yagao",
"desc" : "gaoxiao meibai",
"price" : 30,
"producer" : "gaolujie producer",
"tags" : [
"meibai",
"fangzhu"
]
}
}
5.3 更新文档
文档更细
更新示例(全量更新)
PUT /ecommerce/_doc/1
{
"name": "jiaqiangban gaolujie yagao",
"desc": "gaoxiao meibai",
"price": 40,
"producer": "gaolujie producer",
"tags": [
"meibai",
"fangzhu"
]
}
再次查询,检查是否更新
# GET /index/type/id
{
"_index" : "ecommerce",
"_type" : "_doc",
"_id" : "1",
"_version" : 2,
"_seq_no" : 2,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "jiaqiangban gaolujie yagao",
"desc" : "gaoxiao meibai",
"price" : 40,
"producer" : "gaolujie producer",
"tags" : [
"meibai",
"fangzhu"
]
}
}
注意的小点
ElasticSearch实际上并没有在底层执行覆盖更新。而是先删除旧文档,再添加一条新文档。
ES也支持部分字段更新,参见ElasticSearch 7.x 实战入门07
5.4 删除文档
示例
DELETE /ecommerce/_doc/4
成功执行后的返回的结果
{
"_index" : "ecommerce",
"_type" : "_doc",
"_id" : "4",
"_version" : 2,
"result" : "deleted",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 7,
"_primary_term" : 1
}
6、判定文档是否存在
HEAD index/_doc/1
示例
HEAD ecommerce/_doc/1
存在的话返回 200 - OK
不存在返回 404 - Not Found
注意
type的概念已经从ElasticSearch中移除。
下一篇: 02、7种搜索方式的简单操作 https://www.jianshu.com/p/5e5cedaa1a31