1.CRUD基本操作
1.1 CREATE(创建)
- 支持自动生成文档ID和指定文档ID两种方式。
-
post /index_name/_doc
,自动生成document id -
PUT index_name/_create/1
,创建时显示指定_create,如果id存在,则操作失败。
-
1.2 GET(获取)
格式:GET index_name/_doc/id
例如: GET movies/_doc/1
{
"_index" : "movies",
"_type" : "_doc",
"_id" : "1",
"_version" : 2,
"_seq_no" : 9783,
"_primary_term" : 5,
"found" : true,
"_source" : {
"genre" : [
"Adventure",
"Animation",
"Children",
"Comedy",
"Fantasy"
],
"year" : 1995,
"title" : "Toy Story",
"id" : "1",
"@version" : "1"
}
}
- 找到文档返回200
- 文档元信息(返回的最外面一层)
- _index/_type (文档所属的索引和类型)
- _version表示版本信息,文档修改的次数。
- _source表示最原始的信息
- 文档元信息(返回的最外面一层)
- 找不到文档返回404
1.3 INDEX
格式:PUT index_name/_doc/1
和CREATE的区别在于,如果文档不存在,就会索引新的文档。否则现有的文档会被删除,新的文档被索引,版本信息加1。
1.4 UPDATE(更新)
格式:
POST index_name/_update/1
{
"doc":{
"albums":["Album","Alumbs"]
}
}
- UPDATE 方法不会删除原来文档,实现数据更新。
- POST方法的 Payload需要包含在doc里面。
1.4 DELETE(删除)
格式 DELETE index_name/_doc/1
创建
POST users/_doc
{
"account":"zhangsan@qq.com",
"user_name":"张三"
}
{
"_index" : "users",
"_type" : "_doc",
"_id" : "38m-928BexMGWhwZ99Xt",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
index
PUT users/_doc/38m-928BexMGWhwZ99Xt
{
"account":"lisi@qq.com",
"user_name":"张三"
}
{
"_index" : "users",
"_type" : "_doc",
"_id" : "38m-928BexMGWhwZ99Xt",
"_version" : 2,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 2,
"_primary_term" : 1
}
//版本号增加了1
UPDATE
POST users/_update/38m-928BexMGWhwZ99Xt
{
"doc":{
"address":"地址信息"
}
}
{
"_index" : "users",
"_type" : "_doc",
"_id" : "38m-928BexMGWhwZ99Xt",
"_version" : 3,
"_seq_no" : 3,
"_primary_term" : 1,
"found" : true,
"_source" : {
"account" : "lisi@qq.com",
"user_name" : "张三",
"address" : "地址信息"
}
}
2.批量操作
2.1 Bulk API
格式: POST _bulk
用于在一次API请求里面完成多次操作,减少http请求次数,属于批量操作。
- 支持 index,create,update,delete类型。
- 可以在url指定index,也可以在请求的payload中进行。
- 操作的单条失败,不会影响其他的操作
- 返回结果包含每一条执行的结果。
#### 2.1 POST _bulk
{"index":{"_index":"users","_id":1}}
{"account":"wangwu@qq.com","user_name":"王五"}
{"delete":{"_index":"users","_id":"1"}}
{"create":{"_index":"users","_id":4}}
{"account":"sunliu@qq.com","user_name":"孙六"}
{"update":{"_index":"users","_id":"3"}}
{"doc":{"account":"wangwu@qq.com","user_name":"王七"}}
2.2 批量读取_mget
格式:
GET /_mget
{
"docs": [
{
"_index":"users",
"_id":1
},
{
"_index":"users",
"_id":2
}
]
}
{
"docs" : [
{
"_index" : "users",
"_type" : "_doc",
"_id" : "1",
"found" : false
},
{
"_index" : "users",
"_type" : "_doc",
"_id" : "3",
"_version" : 2,
"_seq_no" : 13,
"_primary_term" : 1,
"found" : true,
"_source" : {
"account" : "wangwu@qq.com",
"user_name" : "王七"
}
}
]
}
2.3 批量查询
格式 POST index_name/_msearch
案例
POST kibana_sample_data_logs/_msearch
{}
{"query":{"match_all":{}},"size":1}
{"index":"kibana_sample_data_logs"}
{"query":{"match_all":{}},"size":2}
用法暂时不理解以后补充,以后补
3常见错误
问题 | 原因 |
---|---|
无法连接 | 网络故障或者集群挂了 |
连接无法关闭 | 网络故障或者节点出错 |
429 | 集群过于繁忙 |
4xx | 请求格式有错 |
500 | 集群内部错误 |