|NO.Z.00016|——————————|BigDataEnd|——|Hadoop&ElasticSearch.V16|——|ELK.v16|集群|索引管理|文档增删改查及局部更新.V2|
一、更新文档(全部更新)
### --- 把刚才新增的请求方式改为PUT,就是修改了,不过修改必须指定id
~~~ id对应文档存在,则修改
~~~ id对应文档不存在,则新增
~~~ 比如,我们把使用id为4,不存在,则应该是新增
### --- 更新示例
### --- 再次执行刚才的请求,不过把数据改一下:可以看到结果是: updated ,显然是更新数据
~~~ # 示例
PUT /yanqi-company-index/_doc/5
{
"name" : "百度",
"job" : "大数据工程师",
"payment" : "300000",
"logo" :
"chrome://new-tab-page/icons/google_logo.svg"
}


二、更新文档(局部更新)
### --- 更新文档
~~~ Elasticsearch可以使用PUT或者POST对文档进行更新(全部更新),
~~~ 如果指定ID的文档已经存在,则执行更新操作。
~~~ # 注意:
~~~ Elasticsearch执行更新操作的时候,Elasticsearch首先将旧的文档标记为删除状态,
~~~ 然后添加新的文档,旧的文档不会立即消失,但是你也无法访问,
~~~ Elasticsearch会在你继续添加更多数据的时候在后台清理已经标记为删除状态的文档。
~~~ 全部更新,是直接把之前的老数据,标记为删除状态,
~~~ 然后,再添加一条更新的(使用PUT或者POST) 局部更新,只是修改某个字段(使用POST)
### --- 语法
~~~ # 语法
POST /索引名/_update/{id}
{
"doc":{
"field":"value"
}
}
### --- 更新示例
~~~ # 示例
POST /yanqi-company-index/_update/3
{
"doc":{
"name":"淘宝"
}
}

三、删除文档
### --- 根据id进行删除:
~~~ # 语法
~~~ DELETE /索引名/_doc/{id}
~~~ # 示例
~~~ DELETE /yanqi-company-index/_doc/3

### --- 可以看到结果是: deleted ,显然是删除数据;根据查询条件进行删除
~~~ # 语法
POST /索引库名/_delete_by_query
{
"query": {
"match": {
"字段名": "搜索关键字"
}
}
}
### --- 示例
~~~ # 查询name字段百度关键字的doc
POST /yanqi-company-index/_search
{
"query":{
"match":{
"name":"百度"
}
}
}
~~~ # 删除name字段百度关键字的doc
POST /yanqi-company-index/_delete_by_query
{
"query":{
"match":{
"name":"百度"
}
}
}

### --- 删除所有文档
~~~ # 删除所有文档
POST /索引名/_delete_by_query
{
"query": {
"match_all": {}
}
}
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
bdv025-elk
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通