3.3-ES-CURD
2020-03-16 本文已影响0人
落日彼岸
操作 | 命令 | 备注 |
---|---|---|
Index | PUT my_index/_doc/1 { "user" : "Mike","cpmment" : "Tou kone, forsearch"} |
id存在即更新 |
Create | PUT my_index/_create/1 { "user" : "Mike","cpmment" : "Tou kone, forsearch"} POST my_index/_doc/ (不指定ID, 自动生成) { "user" : "Mike","cpmment" : "Tou kone, forsearch"} |
id存在则失败 |
Read | GET my_index/_doc/1 | |
Update | POST my_index/_update/1 {"doc":{ "user" : "Mike","cpmment" : "Tou kone, forsearch"}} |
|
Delete | DELETE my_index/_doc/1 |
-
Tpye名, 约定都用doc
-
Index - 如果ID不存在,创建新的文档; 否则,先删除现有的文档,再创建新的文档,版本会增加
-
Create - 如果ID已经存在, 会失败
-
Update - 文档必须已经存在,更新只会对相应字段做增量修改
批量操作-Bulk API
-
支持在一次API调用中,对不同的索引进行操作
-
支持四种类型操作
-
Index
-
Create
-
Update
-
Delete
-
-
可以在RUL中指定Index, 也可以在请求的Payload中进行
-
操作中单条操作失败,并不会影响其他操作
-
返回结果包括了每一条操作执行和结果
批量读取-megt
- 批量操作可以减少网络连接产生的开销, 提高性能
批量查询-msearch
常见错误返回
问题 | 原因 |
---|---|
无法连接 | 网络故障或集群挂了 |
连接无法关闭 | 网络故障或节点出错 |
429 | 集群过于繁忙 |
4xx | 请求体格式有错 |
500 | 集群内部错误 |
课程DEMO
############Create Document############
#create document. 自动生成 _id
POST users/_doc
{
"user" : "Mike",
"post_date" : "2019-04-15T14:12:12",
"message" : "trying out Kibana"
}
#create document. 指定Id。如果id已经存在,报错
PUT users/_doc/1?op_type=create
{
"user" : "Jack",
"post_date" : "2019-05-15T14:12:12",
"message" : "trying out Elasticsearch"
}
#create document. 指定 ID 如果已经存在,就报错
PUT users/_create/1
{
"user" : "Jack",
"post_date" : "2019-05-15T14:12:12",
"message" : "trying out Elasticsearch"
}
### Get Document by ID
#Get the document by ID
GET users/_doc/1
### Index & Update
#Update 指定 ID (先删除,在写入)
GET users/_doc/1
PUT users/_doc/1
{
"user" : "Mike"
}
#GET users/_doc/1
#在原文档上增加字段
POST users/_update/1/
{
"doc":{
"post_date" : "2019-05-15T14:12:12",
"message" : "trying out Elasticsearch"
}
}
### Delete by Id
# 删除文档
DELETE users/_doc/1
### Bulk 操作
#执行两次,查看每次的结果
#执行第1次
POST _bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test2", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }
#执行第2次
POST _bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test2", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }
### mget 操作
GET /_mget
{
"docs" : [
{
"_index" : "test",
"_id" : "1"
},
{
"_index" : "test",
"_id" : "2"
}
]
}
#URI中指定index
GET /test/_mget
{
"docs" : [
{
"_id" : "1"
},
{
"_id" : "2"
}
]
}
GET /_mget
{
"docs" : [
{
"_index" : "test",
"_id" : "1",
"_source" : false
},
{
"_index" : "test",
"_id" : "2",
"_source" : ["field3", "field4"]
},
{
"_index" : "test",
"_id" : "3",
"_source" : {
"include": ["user"],
"exclude": ["user.location"]
}
}
]
}
### msearch 操作
POST kibana_sample_data_ecommerce/_msearch
{}
{"query" : {"match_all" : {}},"size":1}
{"index" : "kibana_sample_data_flights"}
{"query" : {"match_all" : {}},"size":2}
### 清除测试数据
#清除数据
DELETE users
DELETE test
DELETE test2
相关阅读