ElasticSearch文档操作[ES系列] - 第502篇

这篇具有很好参考价值的文章主要介绍了ElasticSearch文档操作[ES系列] - 第502篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ElasticSearch文档操作[ES系列] - 第502篇,ElasticSearch从入门到精通,jenkins,运维

历史文章(文章累计500+)

国内最全的Spring Boot系列之一

国内最全的Spring Boot系列之二

国内最全的Spring Boot系列之三

国内最全的Spring Boot系列之四

国内最全的Spring Boot系列之

国内最全的Spring Boot系列之六

国内最全的Spring Boot系列之

Elasticsearch可视化平台Kibana [ES系列] - 第498篇

Elasticsearch安装分词插件[ES系列] - 第499篇

ElasticSearch扫盲概念篇[ES系列] - 第500篇

ElasticSearch重建/创建/删除索引操作 - 第501篇

Hi,大家好,我是悟纤。我就是我,不一样的烟火。我就是我,与众不同的小苹果。

这一节来看看ES的文档基本操作 – 增删改查。

一、文档操作

1.1 索引文档

格式: [PUT | POST] /索引名称/[_doc  | _create ]/id

<span style="color:#333333"><span style="background-color:#fafafa"><code><span style="color:#afafaf"><em># 创建文档, 指定id</em></span></code><code><span style="color:#afafaf"><em># 如果id不存在,创建新的文档,否则先删除现有文档,再创建新的文档,版本会增加</em></span></code><code>PUT /es_db/_doc/1</code><code>{</code><code>  <span style="color:#dd1144">"name"</span>: <span style="color:#dd1144">"张三"</span>,</code><code>  <span style="color:#dd1144">"sex"</span>: 1,</code><code>  <span style="color:#dd1144">"age"</span>: 25,</code><code>  <span style="color:#dd1144">"address"</span>: <span style="color:#dd1144">"广州天河公园"</span>,</code><code>  <span style="color:#dd1144">"remark"</span>: <span style="color:#dd1144">"java developer"</span></code><code>}</code><code><span style="color:#afafaf"><em>#创建文档,ES生成id</em></span></code><code>POST /es_db/_doc</code><code>{</code><code>  <span style="color:#dd1144">"name"</span>: <span style="color:#dd1144">"张三"</span>,</code><code>  <span style="color:#dd1144">"sex"</span>: 1,</code><code>  <span style="color:#dd1144">"age"</span>: 25,</code><code>  <span style="color:#dd1144">"address"</span>: <span style="color:#dd1144">"广州天河公园"</span>,</code><code>  <span style="color:#dd1144">"remark"</span>: <span style="color:#dd1144">"java developer"</span></code><code>}</code><code>​</code></span></span>

ElasticSearch文档操作[ES系列] - 第502篇,ElasticSearch从入门到精通,jenkins,运维

注意:POST和PUT都能起到创建/更新的作用,PUT需要对一个具体的资源进行操作也就是要确定id才能进行更新/创建,而POST是可以针对整个资源集合进行操作的,如果不写id就由ES生成一个唯一id进行创建新文档,如果填了id那就针对这个id的文档进行创建/更新

1.2查询文档

根据id查询文档,格式: GET /索引名称/_doc/id

<span style="color:#333333"><span style="background-color:#fafafa"><code><span style="color:#0e9ce5">GET</span> /es_db/_doc/<span style="color:#0e9ce5">1</span></code></span></span>

ElasticSearch文档操作[ES系列] - 第502篇,ElasticSearch从入门到精通,jenkins,运维

条件查询 _search,格式: /索引名称/_doc/_search

<span style="color:#333333"><span style="background-color:#fafafa"><code><span style="color:#afafaf"><em># 查询前10条文档</em></span></code><code><span style="color:#0e9ce5">GET</span> /es_db/_doc/_search</code><code>​</code></span></span>

ES Search API提供了两种条件查询搜索方式:

·REST风格的请求URI,直接将参数带过去

·封装到request body中,这种方式可以定义更加易读的JSON格式

1.2.1 URI Query(了解即可)

<span style="color:#333333"><span style="background-color:#fafafa"><code><span style="color:#afafaf"><em>#通过URI搜索,使用“q”指定查询字符串,“query string syntax” KV键值对</em></span></code><code>​</code><code><span style="color:#afafaf"><em>#条件查询, 如要查询age等于28岁的 _search?q=*:***</em></span></code><code>GET <span style="color:#dd1144">/es_db/_doc/_search?q=age:28</span></code><code>​</code><code><span style="color:#afafaf"><em>#范围查询, 如要查询age在25至26岁之间的 _search?q=***[** TO **]  注意: TO 必须为大写</em></span></code><code>GET <span style="color:#dd1144">/es_db/_doc/_search?q=age[25 TO 26]</span></code><code>​</code><code><span style="color:#afafaf"><em>#查询年龄小于等于28岁的 :<=</em></span></code><code>GET <span style="color:#dd1144">/es_db/_doc/_search?q=age:<=28</span></code><code><span style="color:#afafaf"><em>#查询年龄大于28前的 :></em></span></code><code>GET <span style="color:#dd1144">/es_db/_doc/_search?q=age:>28</span></code><code>​</code><code><span style="color:#afafaf"><em>#分页查询 from=*&size=*</em></span></code><code>GET <span style="color:#dd1144">/es_db/_doc/_search?q=age[25 TO 26]&from=0&size=1</span></code><code>​</code><code><span style="color:#afafaf"><em>#对查询结果只输出某些字段 _source=字段,字段</em></span></code><code>GET <span style="color:#dd1144">/es_db/_doc/_search?_source=name,age</span></code><code>​</code><code><span style="color:#afafaf"><em>#对查询结果排序 sort=字段:desc/asc</em></span></code><code>GET <span style="color:#dd1144">/es_db/_doc/_search?sort=age:desc</span></code><code>​</code></span></span>

1.2.2 DSL Query

DSL(Domain Specific Language领域专用语言)查询是使用Elasticsearch的查询语言来构建查询的方式。

<span style="color:#333333"><span style="background-color:#fafafa"><code><span style="color:#afafaf"><em># match 匹配查询,会对查询文本分词后匹配</em></span></code><code>GET /es_db/_search</code><code>{</code><code>  <span style="color:#dd1144">"query"</span>: {</code><code>    <span style="color:#dd1144">"match"</span>: {</code><code>    <span style="color:#dd1144">"address"</span>: <span style="color:#dd1144">"广州白云"</span></code><code>    }</code><code>  }</code><code>}</code><code>​</code><code><span style="color:#afafaf"><em># term 词项查询,属于精确查询,不会对查询文本分词</em></span></code><code><span style="color:#afafaf"><em># 思考:能否查到文档?</em></span></code><code>GET /es_db/_search</code><code>{</code><code>  <span style="color:#dd1144">"query"</span>: {</code><code>    <span style="color:#dd1144">"term"</span>: {</code><code>    <span style="color:#dd1144">"address"</span>: <span style="color:#dd1144">"广州白云"</span></code><code>    }</code><code>  }</code><code>}</code><code>​</code></span></span>

1.3修改文档

全量更新,整个json都会替换,格式: [PUT | POST] /索引名称/_doc/id

<span style="color:#333333"><span style="background-color:#fafafa"><code><span style="color:#afafaf"><em># 全量更新,替换整个json</em></span></code><code>PUT /es_db/_doc/1</code><code>{</code><code>  <span style="color:#dd1144">"name"</span>: <span style="color:#dd1144">"张三"</span>,</code><code>  <span style="color:#dd1144">"sex"</span>: 1,</code><code>  <span style="color:#dd1144">"age"</span>: 25</code><code>}</code><code>​</code><code><span style="color:#afafaf"><em>#查询文档</em></span></code><code>GET /es_db/_doc/1</code><code>​</code></span></span>

ElasticSearch文档操作[ES系列] - 第502篇,ElasticSearch从入门到精通,jenkins,运维

使用_update部分更新,格式: POST /索引名称/_update/id

update不会删除原来的文档,而是实现真正的数据更新

<span style="color:#333333"><span style="background-color:#fafafa"><code><span style="color:#afafaf"><em># 部分更新:在原有文档上更新</em></span></code><code><span style="color:#afafaf"><em># Update -文档必须已经存在,更新只会对相应字段做增量修改</em></span></code><code>POST /es_db/_update/1</code><code>{</code><code>  <span style="color:#dd1144">"doc"</span>: {</code><code>    <span style="color:#dd1144">"age"</span>: 28</code><code>  }</code><code>}</code><code>​</code><code><span style="color:#afafaf"><em>#查询文档</em></span></code><code>GET /es_db/_doc/1</code><code>​</code></span></span>

ElasticSearch文档操作[ES系列] - 第502篇,ElasticSearch从入门到精通,jenkins,运维

使用 _update_by_query 更新文档:更新符合条件的文档

<span style="color:#333333"><span style="background-color:#fafafa"><code>POST /es_db/_update_by_query</code><code>{</code><code>  <span style="color:#dd1144">"query"</span>: {</code><code>    <span style="color:#dd1144">"match"</span>: {</code><code>      <span style="color:#dd1144">"_id"</span>: <span style="color:#0e9ce5">1</span></code><code>    }</code><code>  },</code><code>  <span style="color:#dd1144">"script"</span>: {</code><code>    <span style="color:#dd1144">"source"</span>: <span style="color:#dd1144">"ctx._source.age = 30"</span></code><code>  }</code><code>}</code><code>​</code></span></span>

1.4并发场景下修改文档

_seq_no_primary_term是对_version的优化,7.X版本的ES默认使用这种方式控制版本,所以当在高并发环境下使用乐观锁机制修改文档时,要带上当前文档的_seq_no和_primary_term进行更新:

<span style="color:#333333"><span style="background-color:#fafafa"><code>GET /es_db/_doc/<span style="color:#0e9ce5">1</span></code><code>​</code><code>​</code><code>POST /es_db/_doc/<span style="color:#0e9ce5">1</span>?if_seq_no=<span style="color:#0e9ce5">6</span>&if_primary_term=<span style="color:#0e9ce5">1</span></code><code>{</code><code><span style="color:#dd1144">"name"</span>: <span style="color:#dd1144">"李四xxx"</span></code><code>}</code><code>​</code></span></span>

ElasticSearch文档操作[ES系列] - 第502篇,ElasticSearch从入门到精通,jenkins,运维

如果版本号不对,会抛出版本冲突异常,如下图:

ElasticSearch文档操作[ES系列] - 第502篇,ElasticSearch从入门到精通,jenkins,运维

1.5删除文档

格式: DELETE /索引名称/_doc/id

<span style="color:#333333"><span style="background-color:#fafafa"><code><span style="color:#0e9ce5">DELETE</span> /es_db/_doc/<span style="color:#0e9ce5">1</span></code></span></span>
我就是我,是颜色不一样的烟火。
我就是我,是与众不同的小苹果。

à悟纤学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

SpringBoothttps://t.cn/R3QDhU0

SpringSecurity5.0http://t.cn/A6ZadMBe

ShardingJDBC分库分表http://t.cn/A6ZarrqS

分布式事务解决方案http://t.cn/A6ZaBnIr

JVM内存模型调优实战:http://t.cn/A6wWMVqG

Spring入门到精通:https://t.cn/A6bFcDh4

大话设计模式之爱你:https://dwz.cn/wqO0MAy7文章来源地址https://www.toymoban.com/news/detail-842559.html

到了这里,关于ElasticSearch文档操作[ES系列] - 第502篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch(五)--ES文档的操作(上)---写入文档

    使用ES构建搜索引擎时需要经常对文档进行操作,除了简单的单条文档操作,有时还需要进行批量操作。我们这章主要学习ES文档的增删改的操作,由于涉及到的代码量会比较多,所以分为3篇文章分别说明文档的这个三个操作。那么我们对文档操作的学习除了在kibana客户端之

    2024年01月16日
    浏览(44)
  • Elasticsearch(七)--ES文档的操作(下)---删除文档

    上篇文章我们了解了ES的修改文档的操作,也同样分别通过ES的kibana客户端以及Java高级Rest客户端进行学习,那么本篇末尾要给大家介绍的是对文档的删除操作,同新修改文档,也有删除单条文档和批量删除文档操作,根据条件删除文档,我们本篇均会涉及到。 在ES中删除文档

    2023年04月12日
    浏览(34)
  • Elasticsearch(六)--ES文档的操作(中)---修改文档

    上篇文章我们了解了ES的插入和批量插入文档的操作,分别通过ES的kibana客户端以及Java高级Rest客户端进行学习,那么本篇则进入到对文档的修改操作,同新增文档,也有更新单条文档和批量更新文档操作,但还多出一个根据条件更新文档,我们本篇均会涉及到。 在ES中更新索

    2024年02月05日
    浏览(44)
  • elasticsearch(ES)分布式搜索引擎01——(初识ES,索引库操作和文档操作,RestClient操作索引库和文档)

    1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 1.1.2.ELK技术栈 elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域: 而elasticsearc

    2024年02月07日
    浏览(62)
  • Elasticsearch学习-ES中文档的基本操作

    一、什么是文档 文档是索引中数据的基本单位,类似于关系型数据库中的一条记录,文档的在ES中以json的数据格式存储。 当一条记录存储到ES中后,ES会为每个文档添加一些除文档内容之外的其他属性信息,用来描述该文档。常用的以用来描述文档的属性有一下这些: _index

    2023年04月08日
    浏览(43)
  • ElasticSearch系列 - SpringBoot整合ES:查询字段不为空的文档 exists

    1. ElasticSearch exists 查询是什么 在某些场景下,我们希望找到某个字段不为空的文档,则可以用exists搜索。字段不为空的条件有: 值存在且不是 null; 值不是空数组; 值是数组,但不是 [null] 例如,查询在字段中至少有一个非空值的文档: 这些文档都将匹配上面的查询: ①

    2024年02月06日
    浏览(74)
  • ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入

    导航: 【黑马Java笔记+踩坑汇总】JavaSE+JavaWeb+SSM+SpringBoot+瑞吉外卖+SpringCloud/SpringCloudAlibaba+黑马旅游+谷粒商城 黑马旅游源码:  https://wwmg.lanzouk.com/ikjTE135ybje 目录 1.初识弹性搜索elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 1.1.2.ELK弹性栈 1.1.3.elasticsearch和lucene 1.1.4.搜索引擎技术

    2024年02月01日
    浏览(56)
  • 袁庭新ES系列15节|Elasticsearch客户端基础操作

    上一章节我们介绍了搭建Elasticsearch集群相关的知识。那么又该如何来操作Elasticsearch集群呢?在ES官网中提供了各种语言的客户端,我们在项目开发过程中有多种Elasticsearch版本和连接客户端可以选择,那么他们有什么区别?这一章节袁老师带领大家来学习Elasticsearch客户端相关

    2024年04月25日
    浏览(51)
  • Elasticsearch使用系列-ES增删查改基本操作+ik分词

    ES是一个NoSql数据库应用。和其他数据库一样,我们为了方便操作查看它,需要安装一个可视化工具 Kibana。 官网: https://www.elastic.co/cn/downloads/kibana 和前面安装ES一样,选中对应的环境下载,这里选择windows环境,注意安装的版本一定要和ES的版本一致,不然可能会启动不起来。

    2024年02月01日
    浏览(56)
  • TiDB数据库从入门到精通系列之四:SQL 基本操作

    成功部署 TiDB 集群之后,便可以在 TiDB 中执行 SQL 语句了。因为 TiDB 兼容 MySQL,你可以使用 MySQL 客户端连接 TiDB,并且大多数情况下可以直接执行 MySQL 语句。 SQL 是一门声明性语言,它是数据库用户与数据库交互的方式。它更像是一种自然语言,好像在用英语与数据库进行对

    2024年02月12日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包