ES基本概念
索引
索引同数据库
http://192.168.1.112:9200/customer/external/1
如上链接中,customer就是索引
类型
类型同表
如上链接中,external就是类型
添加一个数据
PUT:
为数据库customer的external类型id为1的数据添加或更新一条记录
put不允许不带id
http://192.168.1.112:9200/customer/external/1
{
"name": "Paosin"
}
Resp
{
"_index": "customer", // 该数据库
"_type": "external", // 该类型
"_id": "1", // 保存数据的id
"_version": 3, // 保存数据的版本
"result": "updated", // 保存结果,第一次展示"created",之后展示"update"
"_shards": { //分片
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 2,
"_primary_term": 1
}
其中,带有“_”的叫做元数据
POST
可以不用带id参数,直接添加并自动赋予一个id,每次发送产生不同的id
带id就是更新
http://192.168.1.112:9200/customer/external
{
"name": "Paosin"
}
Resp
{
"_index": "customer",
"_type": "external",
"_id": "xaYAhnYBKCkh7cL4m9V6", # 自动赋予的id
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 3,
"_primary_term": 1
}
并发控制
先查操作之前当前数据的_seq_no,_primary_term值比如各自是0和1
在更新的时候url带上if_seq_no=0&if_primary_term=1
指明只有在这个值的情况下才进行更新,否则返回错误
http://192.168.1.112:9200/customer/external/1?if_seq_no=2&if_primary_term=1
{
"name":"test seq put"
}
_update语法
可以使用该语法指定更新
必须
将数据包裹在doc
节点下
当数据完全一致时,将不会更新,_version、_seq_no不会增加
POST
http://192.168.1.112:9200/customer/external/1/_update
{
"doc": {
"name": "John"
}
}
根据id删除
DELETE
http://192.168.1.112:9200/customer/external/1
RESP
{
"_index": "customer",
"_type": "external",
"_id": "1",
"_version": 5,
"result": "deleted",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 5,
"_primary_term": 2
}
ES支持删除索引,但不支持删除类型
网友评论