1.创建文档
:::success
- 创建单个数据指定ID:使用_doc路由+PUT请求+id参数
- 创建单个数据不指定ID:使用_doc路由+POST请求
- 创建单个数据指定ID并进行ID唯一性控制:使用_doc路由+PUT请求+id参数+op_type=create参数
- 创建批量数据指定ID:使用_bulk路由+PUT请求/POST请求+create关键字+_id属性
创建批量数据不指定ID:使用_bulk路由+PUT请求/POST请求+create关键字 :::
单个数据
指定ID
PUT /${indexName}/_doc/1
{
"name":"dog",
"age":5
}
不指定ID
POST /${indexName}/_doc/
{
"name":"dog",
"age":5
}
ID唯一性控制
PUT /${indexName}/_doc/1?op_type=create
{
"name":"cat",
"age":51
}
如图,增加了op_type=create的url参数,再次触发更新报错
批量数据
指定ID
PUT student/_bulk
{ "create":{ "_id": 1 } }
{ "name":"王乾雯","age":18,"dec":"she is so sex too"}
{ "create":{ "_id": 2 } }
{ "name":"宋可心","age":18,"dec":"she is so sex"}
不指定ID
PUT student/_bulk
{ "create":{} }
{ "name":"郭楠","age":22,"dec":"she is good at sex"}
{ "create":{} }
{ "name":"王可菲","age":17,"dec":"she is so beautiful"}
2.修改文档
:::success
按照ID全量更新单个数据:使用_doc路由+PUT请求+id参数
- 按照ID全量更新单个数据并进行乐观锁控制:使用_doc路由+PUT请求+if_seq_no&if_primary_term参数+id参数
- 按照ID部分更新单个数据(包含属性添加):使用_update路由+POST请求+id参数
- 按照ID全量更新批量数据:使用_bulk路由+PUT请求/POST请求+index关键字+_id属性
- 按照ID部分更新批量数据(包含属性添加):使用_bulk路由+PUT请求/POST请求+update关键字+_id属性
- 按照条件修改数据:使用_update_by_query路由+POST请求+ctx._source[‘字段名称’]=’字段值’;…..’
- 按照条件给数据新增属性:使用_update_by_query路由+POST请求+ctx._source[‘字段名称’]=’字段值’;…..’
按照条件给数据移除属性:使用_update_by_query路由+POST请求+ctx._source.remove(‘字段名称’);…..’ :::
按照ID单个
全量更新
PUT /${indexName}/_doc/1
{
"name":"dog",
"age":5
}
返回结果,可以看到本次执行的是修改操作,并且版本号进行了递增
基于乐观锁全量更新
PUT /${indexName}/_doc/${id}?if_seq_no=${seqValue}&if_primary_term=${primaryTermValue}
{
"name":"pig",
"age":100
}
第一次修改成功
再次修改,如图,提示乐观锁字段不一致,导致并发更新失败
部分更新
POST student/_update/1
{
"doc":{
"name":"冯铁城",
"sex":1
}
}
按照ID批量
全量更新
PUT student/_bulk
{ "index":{ "_id": 8 } }
{ "name":"lulu","age":19,"dec":"she has an sex feet"}
{ "index":{ "_id": 9 } }
{ "name":"宁娜","age":27,"dec":"she has an sex feet too"}
部分更新
PUT student/_bulk
{ "update":{ "_id": 8 } }
{ "doc":{ "age":20,"dec":"she has an sex feet!i want fuck her!!!"}}
{ "update":{ "_id": 9 } }
{ "doc":{ "age":28,"dec":"she has an sex feet too!!ob my god!!!"}}
按照条件
修改字段
将姓名为冯铁城的学生描述改为超级无敌帅小伙,名称改为大帅哥冯铁城
POST student/_update_by_query
{
"query": {
"match": {
"name": "冯铁城"
}
},
"script": {
"source": "ctx._source['des']='一个超级无敌帅小伙';ctx._source['name']='大帅哥冯铁城'",
"lang": "painless"
}
}
增加字段
姓名为夏洛的学生,增加标签字段,字段类型数组,字段元素大傻子
POST student/_update_by_query
{
"query": {
"match": {
"name": "夏洛"
}
},
"script": {
"source": "ctx._source['tags']=['大傻子']",
"lang": "painless"
}
}
移除字段
移除姓名为夏洛的学生,des,name字段
POST student/_update_by_query
{
"query": {
"match": {
"name": "夏洛"
}
},
"script": {
"source": "ctx._source.remove('des');ctx._source.remove('tags')",
"lang": "painless"
}
}
3.删除文档
:::success
按照ID移除单个数据:使用_doc路由+DELETE请求+id参数
- 按照ID移除批量数据:使用_bulk路由+PUT请求/POST请求+delete关键字+_id属性
- 按照条件移除数据:使用_delete_by_query路由+POST请求
需要注意的是,删除与更新一样,也会导致版本号+1。即使我们删除的文档不存在,版本号同样也会+1 :::
按照ID单个
DELETE /${indexName}/_doc/${id}
按照ID批量
PUT student/_bulk
{ "delete":{"_id":"3C3ihoIBM0pUJCFIxl2q" } }
{ "delete":{"_id":"3S3ihoIBM0pUJCFIxl2q" } }
按照条件
POST student/_delete_by_query
{
"query":{
"match_all":{}
}
}
4.查询文档
:::success
按照ID查询单个数据:使用_doc路由+GET请求+id参数
- 按照ID查询批量数据:使用_mget路由+GET请求+ids参数
- 按照ID校验数据是否存在:使用_doc路由+HEAD请求+id参数
- 只查询部分字段:使用_source_includes/_source_excludes参数
:::
按照ID单个
GET ${indexName}/_doc/${id}
按照ID批量
GET student/_mget
{
"ids":[8,9]
}
按照ID校验文档是否存在
HEAD ${indexName}/_doc/${id}
存在
不存在
查询部分字段
GET ${indexName}/_doc/${id}?_source_includes=${fieldName}…