查询 es 相关的一些信息
- /_cat/nodes 查看 es 内节点信息
- /_cat/health 查看 es 的健康状况
- /_cat/master 查看主节点信息
- /_cat/indices 查看所有索引信息
保存一条数据
PUT 方式
使用 put 方式发送数据时,需要指定 Index/Type/Id
// 例中 Index 为 amdin, Type 为 advanced,指定 id 为1
http://100.100.100.100:9200/admin/advanced/1
其中需要携带 json 格式的请求体
{
"name":"lvshui5u"
}
请求后返回信息为
{
"_index": "admin",
"_type": "advanced",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
其中 _version 表示当前数据的版本号,result 表示当前操作的状态,如果发送请求前不存在当前数据,即为 created。
再次发送相同的请求,查看返回体。
{
"_index": "admin",
"_type": "advanced",
"_id": "1",
"_version": 2,
"result": "updated",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 1,
"_primary_term": 1
}
此时版本号增加,操作状态为 updated。
POST 方式
与 put 方式最大的差异是可以不指定 id
http://100.100.100.100:9200/admin/advanced/
查看返回体
{
"_index": "admin",
"_type": "advanced",
"_id": "NWJj7HoBKkOuR3nm9LS0",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 2,
"_primary_term": 1
}
此时,系统会自动生成一个唯一 id。再次发送不带 id 的 post 请求后会再增加一条数据。
如果指定 id 用法与 put 相同。
查询一条数据
GET 方式
发送请求,需要指定 Index/Type/Id
http://100.100.100.100:9200/admin/advanced/1
返回体
{
"_index": "admin",
"_type": "advanced",
"_id": "1",
"_version": 2,
"_seq_no": 1,
"_primary_term": 1,
"found": true,
"_source": {
"name": "lvshui5u"
}
}
其中 _seq_no 是并发控制字段,每次有更新就会增加。_primary_term 指数据所在主分片编号。这两个字段用来控制并发。
模拟乐观锁,在两次更新时携带上面两个字段参数,如果符合才进行修改。
两次 put 操作:
http://100.100.100.100:9200/admin/advanced/1?if_seq_no=1&if_primary_term=1
第一次成功
第二次失败
{
"error": {
"root_cause": [
{
"type": "version_conflict_engine_exception",
"reason": "[1]: version conflict, required seqNo [1], primary term [1]. current document has seqNo [5] and primary term [1]",
"index_uuid": "0BU3iav9S_eqK0jxZ-E_Bg",
"shard": "0",
"index": "admin"
}
],
"type": "version_conflict_engine_exception",
"reason": "[1]: version conflict, required seqNo [1], primary term [1]. current document has seqNo [5] and primary term [1]",
"index_uuid": "0BU3iav9S_eqK0jxZ-E_Bg",
"shard": "0",
"index": "admin"
},
"status": 409
}
显示 ,此时的 _seq_no 值为 5 ,不允许更新操作。
更新一条数据
除了上面说的两种 PUT 和 POST 方式,还有一种使用 POST 携带参数 _update 方式
http://100.100.100.100:9200/admin/advanced/1/_update
携带请求体
{
"doc":{
"name":"绿水本无忧"
}
}
这里的请求体与之前两种方式不同,需要添加前面的 doc
响应与之前一样
{
"_index": "admin",
"_type": "advanced",
"_id": "1",
"_version": 4,
"result": "updated",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 6,
"_primary_term": 1
}
其 result 状态为 updated,版本号也改变了。
再次发送,不改变请求体里的 json 内容。
响应体如下:
{
"_index": "admin",
"_type": "advanced",
"_id": "1",
"_version": 4,
"result": "noop",
"_shards": {
"total": 0,
"successful": 0,
"failed": 0
},
"_seq_no": 6,
"_primary_term": 1
}
可以看到,与之前的更新不同的是,版本号没有改变,result 状态为 noop,意为 no operate,没有进行操作。携带 _update 会检查原数据与更新数据是否相同。
删除一条数据
使用 DELETE 方式发送请求,指明 Index/Type/Id
http://100.100.100.100:9200/admin/advanced/1/
响应体
{
"_index": "admin",
"_type": "advanced",
"_id": "1",
"_version": 5,
"result": "deleted",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 7,
"_primary_term": 1
}
result 显示 deleted。
再次查询,得到的响应为
{
"_index": "admin",
"_type": "advanced",
"_id": "1",
"found": false
}
显示查找 404 not found。
删除整个索引
使用 DELETE 方式发送请求,指明 Index
http://100.100.100.100:9200/admin
响应体为
{
"acknowledged": true
}
再次查询,响应体为
{
"error": {
"root_cause": [
{
"type": "index_not_found_exception",
"reason": "no such index [admin]",
"resource.type": "index_expression",
"resource.id": "admin",
"index_uuid": "_na_",
"index": "admin"
}
],
"type": "index_not_found_exception",
"reason": "no such index [admin]",
"resource.type": "index_expression",
"resource.id": "admin",
"index_uuid": "_na_",
"index": "admin"
},
"status": 404
}
可以看出和删除一条数据的响应体不同,这里直接指明 index not found。
批量执行
发送 POST 请求,携带参数 _bulk,语法格式为
{action:{metadata}}
{request body}
{动作:{元数据}}
{请求体}
比如 POST /admin/advanced/_bulk
貌似 postman 不支持批量执行,移步 Kibana 执行,插入两条数据
{"index":{"_id":"1"}}
{"name":"lvshui5u"}
{"index":{"_id":"2"}}
{"name":"lllwwy"}
响应体显示了两次操作的返回
{
"took" : 87,
"errors" : false,
"items" : [
{
"index" : {
"_index" : "admin",
"_type" : "advanced",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1,
"status" : 201
}
},
{
"index" : {
"_index" : "admin",
"_type" : "advanced",
"_id" : "2",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 1,
"_primary_term" : 1,
"status" : 201
}
}
]
}
插入一个,更新一个,删除一个
POST /admin/advanced/_bulk
{"index":{"_id":"3"}}
{"name":"lvshui5u"}
{"update":{"_id":"3"}}
{"doc":{"name":"lllwwy"}}
{"delete":{"_id":"3"}}
响应
{
"took" : 42,
"errors" : false,
"items" : [
{
"index" : {
"_index" : "admin",
"_type" : "advanced",
"_id" : "3",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 2,
"_primary_term" : 1,
"status" : 201
}
},
{
"update" : {
"_index" : "admin",
"_type" : "advanced",
"_id" : "3",
"_version" : 2,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 3,
"_primary_term" : 1,
"status" : 200
}
},
{
"delete" : {
"_index" : "admin",
"_type" : "advanced",
"_id" : "3",
"_version" : 3,
"result" : "deleted",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 4,
"_primary_term" : 1,
"status" : 200
}
}
]
}
|