ElasticSearch 文档的添加、获取、更新、删除_05

文章目录

            • 新建文档
            • 获取文档
            • 批量获取
            • 文档更新
            • 查询更新
            • 删除文档
            • 批量操作

新建文档

首先新建一个索引。

然后向索引中添加一个文档:

PUT blog/_doc/1
{"title":"6. ElasticSearch 文档基本操作","date":"2021-12-07","content":"首先新建一个索引。"
}

1 表示新建文档的 id。

添加成功后,响应的 json 如下:

{"_index" : "blog","_type" : "_doc","_id" : "1","_version" : 1,"result" : "created","_shards" : {"total" : 2,"successful" : 2,"failed" : 0},"_seq_no" : 0,"_primary_term" : 1
}
  • _index 表示文档索引。
  • _type 表示文档的类型。
  • _id 表示文档的 id。
  • _version 表示文档的版本(更新文档,版本会自动加 1,针对一个文档的)。
  • result 表示执行结果。
  • _shards 表示分片信息。
  • _seq_no 和 _primary_term 这两个也是版本控制用的(针对当前 index)。

添加成功后,可以查看添加的文档:
在这里插入图片描述
当然,添加文档时,也可以不指定 id,此时系统会默认给出一个 id,如果不指定 id,则需要使用 POST 请求,而不能使用 PUT 请求。

POST blog/_doc
{"title":"666","date":"2020-11-05","content":"首先新建一个索引。"
}
获取文档

Es 中提供了 GET API 来查看存储在 es 中的文档。使用方式如下:

GET blog/_doc/1

上面这个命令表示获取一个 id 为 1 的文档。

如果获取不存在的文档,会返回如下信息:

{"_index" : "blog","_type" : "_doc","_id" : "1","_version" : 1,"_seq_no" : 0,"_primary_term" : 1,"found" : true,"_source" : {"title" : "6. ElasticSearch 文档基本操作","date" : "2021-12-07","content" : "首先新建一个索引。"}
}

如果仅仅只是想探测某一个文档是否存在,可以使用 head 请求:

如果文档不存在,响应如下:

HEAD blog/_doc/2

在这里插入图片描述

HEAD blog/_doc/1

如果文档存在,响应如下:
在这里插入图片描述

批量获取

当然也可以批量获取文档。

GET blog/_mget
{"ids":["1","2"]
}
文档更新
  • 普通更新
    注意,文档更新一次,version 就会自增 1。

可以直接更新整个文档:

PUT blog/_doc/1
{"title":"666"
}

这种方式,更新的文档会覆盖掉原文档。

  • 大多数时候,我们只是想更新文档字段,这个可以通过脚本来实现。
POST blog/_update/1
{"script": {"lang": "painless","source":"ctx._source.title=params.title","params": {"title":"666666"}}
}

更新的请求格式:POST {index}/_update/{id}

在脚本中,lang 表示脚本语言,painless 是 es 内置的一种脚本语言。source 表示具体执行的脚本,ctx 是一个上下文对象,通过 ctx 可以访问到 _source、_title 等。

也可以向文档中添加字段:

POST blog/_update/1
{"script": {"lang": "painless","source":"ctx._source.tags=[\"java\",\"php\"]"}
}GET blog/_doc/1

在这里插入图片描述

通过脚本语言,也可以修改数组。例如再增加一个 tag:

POST blog/_update/1
{"script":{"lang": "painless","source":"ctx._source.tags.add(\"js\")"}
}

当然,也可以使用 if else 构造稍微复杂一点的逻辑。

POST blog/_update/1
{"script": {"lang": "painless","source": "if (ctx._source.tags.contains(\"java\")){ctx.op=\"delete\"}else{ctx.op=\"none\"}"}
}
查询更新

通过条件查询找到文档,然后再去更新。

例如将 title 中包含 666 的文档的 content 修改为 888。

POST blog/_update_by_query
{"script": {"source": "ctx._source.content=\"888\"","lang": "painless"},"query": {"term": {"title":"666"}}
}
删除文档
  • 根据 id 删除
    从索引中删除一个文档。

删除一个 id 为 1的文档。

DELETE blog/_doc/1

如果在添加文档时指定了路由,则删除文档时也需要指定路由,否则删除失败。

  • 查询删除
    查询删除是 POST 请求。

例如删除 title 中包含 666 的文档

POST blog/_delete_by_query
{"query":{"term":{"title":"666"}}
}

也可以删除某一个索引下的所有文档:

POST blog/_delete_by_query
{"query":{"match_all":{}}
}
批量操作

es 中通过 Bulk API 可以执行批量索引、批量删除、批量更新等操作。

首先需要将所有的批量操作写入一个 JSON 文件中,然后通过 POST 请求将该 JSON 文件上传并执行。

例如新建一个名为 aaa.json 的文件,内容如下:
在这里插入图片描述
首先第一行:index 表示要执行一个索引操作(这个表示一个 action,其他的 action 还有 create,delete,update)。_index 定义了索引名称,这里表示要创建一个名为 user 的索引,_id 表示新建文档的 id 为 666。

第二行是第一行操作的参数。

第三行的 update 则表示要更新。

第四行是第三行的参数。

注意,结尾要空出一行。

aaa.json 文件创建成功后,在该目录下,执行请求命令,如下:

curl -XPOST "http://localhost:9200/user/_bulk" -H "content-type:application/json" --data-binary @aaa.json

执行完成后,就会创建一个名为 user 的索引,同时向该索引中添加一条记录,再修改该记录,最终结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建实时数据仓库首选,云原生数据仓库技术解密

阿里云分析型数据库重磅推出基础版,极大降低了用户构建数据仓库门槛。高度兼容MySQL,极低的使用成本和极高的性能,使中小企业也可以轻松的搭建一套实时数据仓库,实现企业数据价值在线化。 AnalyticDB for MySQL的产品系列包括基础…

阿里宜搭发布专有云版本,基于云原生的应用构建PaaS平台

4月8日,阿里巴巴旗下0代码应用搭建平台“宜搭”发布专有云版本,可以基于阿里云专有云为客户实施专有云部署,实现客户数据的专有云存储,为政府、大型企业提供高稳定、高安全的应用搭建服务,支持业务在线,实现…

ElasticSearch 文档路由,你的数据到底存在哪一个分片上_06

es 是一个分布式系统,当我们存储一个文档到 es 上之后,这个文档实际上是被存储到 master 节点中的某一个主分片上。 例如新建一个索引,该索引有两个分片,0个副本,如下: 接下来,向该索引中保存…

云原生安全模型与实践

来源 | 玉符科技在传统的研发中,我们经常关注的「安全」包括代码安全、机器(运行环境)安全、网络运维安全,而随着云原生时代的到来,如果还按原有的几个维度切分的话,显然容易忽略很多云原生环境引入的新挑战…

阿里云专家详解 2020 服务网格发展趋势

作者 | 王夕宁 阿里巴巴高级技术专家 关注“阿里巴巴云原生”公众号,参与文末留言互动,即有机会获得赠书福利! 本文摘自于由阿里云高级技术专家王夕宁撰写的《Istio 服务网格技术解析与实践》一书,文章从基础概念入手&#xff0…

小姐姐亲身体验:在阿里数据库科研团队实习是种怎样的体验?

作者简介: 张心怡,北京大学前沿交叉研究院研究生,中国人民大学信息学院本科生。从18年底开始在POLARDB-X团队智能数据库组的实习,现已在阿里度过了一年多的时光。 心怡说,对于有志于数据库领域研究的小伙伴&#xff0c…

2020职场人裸辞三大原因:不开心、工资低、没有盼头

近期,脉脉发布了《2020职场人裸辞现状调研报道》,报道显示2020最让职场人想裸辞的三大原因为:不开心、工资低、没有盼头。报告数据中还显示,工资不满预期是最让人想要裸辞的主要原因,但有超过6成职场人表示&#xff0c…

冠状病毒过后世界九大未来预测

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 随着COVID-19的泛滥在全球范围内蔓延,这迫使人类进行创新并改变我们的工作和生活方式。我们现在发现自己的优势在…

疫情宅家促生“囤货经济”,北美零售业极限应考

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 疫情之下,美国零售业同样遭遇冰火两重天的困境。 危机产生和意识到危机产生是两件事情。就在美国对着中国的疫情…

还不懂Redis?看完这个故事就明白了!

来源 | 编程技术宇宙责编 | Jerry我是Redis你好,我是Redis,一个叫Antirez的男人把我带到了这个世界上。说起我的诞生,跟关系数据库MySQL还挺有渊源的。在我还没来到这个世界上的时候,MySQL过的很辛苦,互联网发展的越来…

2020年软件工程现状:Python或将成为第一大编程语言,中国开源涨势最猛

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 现在,是时候谈一谈 2020 年及以后的软件工程状况了。本文以 GitHub Octoverse 数据为基础,加上我作为…

解密阿里云大规模深度学习性能优化实践

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 作者 | 阿里云异构计算AI加速负责人 游亮 近日,斯坦福大学公布了最新的 DAWNBench 深度学习榜单,这是…

深夜,我偷听到程序员要对session下手......

来源 | 编程技术宇宙责编 | Jerry我是一个web服务器我是一个web服务器,我的工作是给人类提供上网服务,我每天要为数以万计的人提供网页浏览服务。已经是深夜了,我还在和手下几个兄弟为了一件事紧张讨论着。“老大,现在咱们每天处理…

太平鸟上云 推动中国服饰行业新零售转型

云栖号案例库:【点击查看更多上云案例】 不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 在消费增速下滑的大环境下,转型焦虑几乎已经弥漫了整个服饰行业,…

Typora 常用技巧

文章目录1. 引用样式2. 插入表格3. 图片设置1. 引用样式 输入>按tab键 流程 默认样式: blockquote {border-left: 4px solid #dfe2e5;padding: 0 15px;color: #777777; }修改后样式 blockquote {border-left: 4px solid #62ca38!important;background:#f…

海升集团数据上云 走出智能农业的新路子

云栖号案例库:【点击查看更多上云案例】 不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 尽管最近水果的价格持续上涨,但水果消费的需求和市场始终在快速提升。墨西哥…

干货!一文看Doris在作业帮实时数仓中的应用实践

数据驱动未来。在大数据生态中,数据分析系统在数据创造价值过程中起着非常关键的作用,直接影响业务决策效率以及决策质量。Apache Doris作为一款支持对海量大数据进行快速分析的MPP数据库,在数据分析领域有着简单易用、高性能等优点。9月20日…

拿下 Gartner 容器产品第一,阿里云打赢云原生关键一战

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 近日,Gartner 发布 2020 年公共云容器报告,据报告显示,阿里云和 AWS 拥有最丰富的产品布局…

训练机器人看脸读“心”,真的靠谱吗?

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 虽然人工智能公司极力推广人脸情绪识别软件,但是心理学家却在质疑情绪识别只是说起来容易。 数百张人脸在屏幕上…

核弹级漏洞 Apache Log4j2 漏洞详情和修复建议

文章目录一、. 普通web项目1. 下载依赖2. 解压3.更新操作4.移除旧依赖5. 更新包二. maven项目修复2.1. maven 项目2.2. 微服务项目一、. 普通web项目 下载官网:https://logging.apache.org/log4j/2.x/download.html 1. 下载依赖 wget https://dlcdn.apache.org/l…