elasticsearch 对文档CRUD
Bulk API
mget
msearch
Create
Create 文档时,如果ID已经存在,会失败
create document. 自动生成 _id
POST users/_doc
{
"user" : "Mike",
"post_date" : "2020-12-5",
"message" : "trying out Kibana"
}
#create document, 指定Id,如果id已经存在,会报错
PUT users/_doc/2?op_type=create
{
"user" : "Jack",
"post_date" : "2020-12-5",
"message" : "Elasticsearch"
}
如果id不存在结果如下
如果id 存在则结果为
Read
Get the document by ID
GET users/_doc/2
Index
Index 可以理解为Create,但是Index的ID不存在时,创建新的文档。否则,先删除旧的文档,在创建新的文档,版本号会增加
PUT users/_doc/2
{
"user" : "Mike"
}
(Index后 _version 变为了3,Index了两次)
Update
update 在原文档上添加字段,文档必须已经存在,更新只会对相应的字段做增量修改
POST users/_update/2/
{
"doc": {
"post_date": "2020-12-5 15:13",
"message": "trying play CSGO"
}
}
GET users/_doc/2
Delete
DELETE users/2
Bulk API
Bulk API 支持在一次调用中,对不同的索引进行操作
支持四种类型的操作
- Index
- Create
- Update
- Delete
可以在URI中指定 Index ,也可以在请求的 Payload 中进行
操作中单条操作失败时,并不会影响其他操作
返回结果包括了每一条操作执行的结果
批量读取 - mget
msearch
批量操作,可以减少网络连接所产生的开销,提高性能
GET _mget
{
"docs": [
{
"_index": "users",
"_id": 1
},
{
"_index": "users",
"_id": 2
}
]
}
ES API 常见错误返回
问题 | 原因 |
---|---|
无法连接 | 网络故障或集群挂了 |
连接无法关闭 | 网络故障或节点出错 |
429 | 集群过于繁忙 |
4xx | 请求体格式有错 |
500 | 集群内部错误 |