一、elasticsearch单节点的增删改
1.指定ID新增文档
PUT /student/_doc/1
{
"age": 1,
"name": "老王",
"sex": "女"
}{
"_index" : "student",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 3
}
2.不指定ID新增文档
POST /student/_doc
{
"age": 2,
"name": "老张",
"sex": "男"
}{
"_index" : "student",
"_type" : "_doc",
"_id" : "L3b_KIkB38DR8QwSbMmC",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"_seq_no" : 4,
"_primary_term" : 3
}
3.通过ID修改文档
PUT /student/_doc/1
{
"age": 2,
"name": "老王",
"sex": "女"
}{
"_index" : "student",
"_type" : "_doc",
"_id" : "1",
"_version" : 5,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"_seq_no" : 5,
"_primary_term" : 3
}
4.通过乐观锁修改文档
说明:在查询文档时会返回一个版本号 _version 在修改时带上,比已存在文档版本号更大的号码才可修改,否则修改失败。
测试当前数据如下
{
"_index" : "student",
"_type" : "_doc",
"_id" : "1",
"_version" : 11,
"_seq_no" : 11,
"_primary_term" : 3,
"found" : true,
"_source" : {
"age" : 3,
"name" : "老王",
"sex" : "女"
}
}4.1 修改版本号小于等于当前版本号
当前版本号为11,测试用11或11以下的版本号修改
POST /student/_doc/1?version=11&version_type=external
{
"age": 3,
"name": "老王",
"sex": "女"
}{
"error": {
"root_cause": [
{
"type": "version_conflict_engine_exception",
"reason": "[1]: version conflict, current version [11] is higher or equal to the one provided [11]",
"index_uuid": "3sHlLImRTC-_89cCsdO4JQ",
"shard": "0",
"index": "student"
}
],
"type": "version_conflict_engine_exception",
"reason": "[1]: version conflict, current version [11] is higher or equal to the one provided [11]",
"index_uuid": "3sHlLImRTC-_89cCsdO4JQ",
"shard": "0",
"index": "student"
},
"status": 409
}4.2 修改版本号大于当前版本号
POST /student/_doc/1?version=20&version_type=external
{
"age": 3,
"name": "老王",
"sex": "女"
}{
"_index" : "student",
"_type" : "_doc",
"_id" : "1",
"_version" : 20,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"_seq_no" : 12,
"_primary_term" : 3
}
5.批量修改单个字段
POST /student/_update/1
{
"script":"ctx._source.age += 5"
}{
"_index" : "student",
"_type" : "_doc",
"_id" : "1",
"_version" : 2,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"_seq_no" : 15,
"_primary_term" : 3
}
6.通过ID删除文档
DELETE /student/_doc/1{
"_index" : "student",
"_type" : "_doc",
"_id" : "1",
"_version" : 21,
"result" : "deleted",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"_seq_no" : 13,
"_primary_term" : 3
}
7.通过ID查询文档
GET /student/_doc/1{
"_index" : "student",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 14,
"_primary_term" : 3,
"found" : true,
"_source" : {
"age" : 1,
"name" : "老王",
"sex" : "女"
}
}
、