ElasticSearch 文档操作

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

ElasticSearch 文档操作,ElasticSearch,elasticsearch,jenkins,大数据

准备数据

PUT user
{
  "mappings": {
    "properties": {
      "age": {"type": "integer"},
      "email": {"type": "keyword"},
      "name": {"type": "keyword"},
      "address": {"type": "text", "analyzer": "ik_smart"}
    }
  }
}
POST user/_bulk
{"index": {"_id": 1}}
{"name": "张三", "age": 10, "email": "1.qq.com", "address": "北京朝阳"}
{"index": {"_id": 2}}
{"name": "李四", "age": 20, "email": "2.qq.com", "address": "北京西城"}
{"index": {"_id": 3}}
{"name": "王五", "age": 30, "email": "3.qq.com", "address": "北京东城"}
{"index": {"_id": 4}}
{"name": "赵六", "age": 40, "email": "4.qq.com", "address": "北京海淀"}

创建文档

指定id

// 无则插入,有则覆盖(覆盖的逻辑是先删除,再插入)
PUT /<target>/_doc/<_id>
// 无则插入,有则覆盖
POST /<target>/_doc/<_id>
// 无则插入,有则报错
PUT /<target>/_create/<_id>
// 无则插入,有则报错
POST /<target>/_create/<_id>

不指定id

// 正常插入
POST /<target>/_doc
// 报错
POST /<target>/_create
// 报错
PUT /<target>/_create
// 报错
PUT /<target>/_doc
PUT user/_doc/5
{
  "name": "张三(5)",
  "age": 10,
  "email": "1.qq.com",
  "address": "北京朝阳"
}

删除文档

// 根据 id 删除
DELETE /<index>/_doc/<_id>
// 根据查询删除
POST /<target>/_delete_by_query

删除 id 为1的数据

DELETE user/_doc/1

删除全部数据

POST user/_delete_by_query
{
  "query": {
    "match_all": {}
  }
}

更新文档

// 根据 id 更新
POST /<index>/_update/<_id>
// 根据查询更新
POST /<target>/_update_by_query

将 id 为1的数据的 name 修改为张三(修改后)

POST user/_update/1
{
  "doc": {
    "name": "张三(修改后)"
  }
}

将 id 为1,2的数据 age 修改为70

POST user/_update_by_query
{
  "query": {
    "ids": {
      "values": [1, 2]
    }
  },
  "script": {
    "source": "ctx._source.age = 70"
  }
}

索引重建(reindex)

索引在使用一段时间后,如果想修改索引的静态设置,比如主分片的数目,分词器等(这些设置无法直接修改),此时就可以使用索引重建

POST _reindex
{
  "source": {
    "index": "my-index-000001"
  },
  "dest": {
    "index": "my-new-index-000001"
  }
}

并发控制

当进行并发控制时通常有乐观锁和悲观锁两种方式:

乐观锁:适用于读多写少的情况,冲突比较少,可以提高系统的吞吐量
悲观锁:适用于读少写多的情况,经常会产生冲突,如果使用乐观锁,应用会不断的重试,会降低性能

ElasticSearch 使用乐观锁的形式来进行并发控制,即 if_primary_term 参数和 if_seq_no 参数

参数 作用
if_primary_term 数据在哪个分片
if_seq_no 版本号,每次修改都会增加

插入一条数据

POST user/_doc/5
{
  "name": "张三(5)",
  "age": 10,
  "email": "1.qq.com",
  "address": "北京朝阳"
}
{
  "_index" : "user",
  "_id" : "5",
  "_version" : 12,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "_seq_no" : 38,
  "_primary_term" : 2
}

查询插入的数据

GET user/_doc/5
{
  "_index" : "user",
  "_id" : "5",
  "_version" : 12,
  "_seq_no" : 38,
  "_primary_term" : 2,
  "found" : true,
  "_source" : {
    "name" : "张三(5)",
    "age" : 10,
    "email" : "1.qq.com",
    "address" : "北京朝阳"
  }
}

当 _seq_no=38 时,执行如下请求报错,加if_seq_no改为38时正常执行

POST user/_doc/5?if_primary_term=2&if_seq_no=30
{
  "name": "张三(5)",
  "age": 10,
  "email": "1.qq.com",
  "address": "北京朝阳"
}

创建,更新,删除文档等操作的 api 都可以使用这2个参数

批量操作

批量操作对json有严格的要求,每个json串不能换行,只能放在同一行,相邻的json串之间必须要有换行。每个操作必须是一对json串(delete语法除外)

{ action: { metadata }}
{ request body        }
{ action: { metadata }}
{ request body        }
操作类型 介绍
create 文档id不存在则创建,不存在则报错
index 文档id不存在则创建,存在则更新文档
update 根据文档id更新文档,不存在则返回错误
delete 根据文档id删除文档,不存在则返回错误

批量新增

POST user/_bulk
{"index": {"_id": 1}}
{"name": "张三", "age": 10, "email": "1.qq.com", "address": "北京朝阳"}
{"index": {"_id": 2}}
{"name": "李四", "age": 20, "email": "2.qq.com", "address": "北京西城"}
{"index": {"_id": 3}}
{"name": "王五", "age": 30, "email": "3.qq.com", "address": "北京东城"}
{"index": {"_id": 4}}
{"name": "赵六", "age": 40, "email": "4.qq.com", "address": "北京海淀"}

参考博客

官方文档
[0]https://www.elastic.co/guide/en/elasticsearch/reference/8.11/docs.html
[1]https://blog.csdn.net/weixin_39723544/article/details/109237175
[2]https://cloud.tencent.com/developer/article/2133017
大佬博客
[3]https://elasticstack.blog.csdn.net/article/details/128835177
插入方式的区别
[4]https://www.modb.pro/db/1717735427791724544文章来源地址https://www.toymoban.com/news/detail-775625.html

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

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

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

相关文章

  • Elasticsearch各种高级文档操作

    本文来记录下Elasticsearch各种文档操作 在进行各种文档操作之前,我们先进行初始化文档数据的工作 在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为: 请求提参数解释 参数 解释 query 代表一个查询对象,里面可以有不同的查询属性 match_all 查

    2024年01月21日
    浏览(27)
  • 【Elasticsearch】文档操作

    目录 3.文档操作 3.1.新增文档 3.2.查询文档 3.3.删除文档 3.4.修改文档 3.4.1.全量修改 3.4.2.增量修改 3.5.总结 语法: 示例: 响应: 根据rest风格,新增是post,查询应该是get,不过查询一般都需要条件,这里我们把文档id带上。 语法: 通过kibana查看数据: 查看结果: 删除使用

    2024年02月15日
    浏览(29)
  • Elasticsearch各种高级文档操作3

    本文来记录几种Elasticsearch的文档操作 在进行各种文档操作之前,我们先进行初始化文档数据的工作 聚合允许使用者对 es 文档进行统计分析,类似与关系型数据库中的 group by,当然还有很多其他的聚合,例如取最大值、平均值等等。 在 apifox 中,向 ES 服务器发 GET请求 :ht

    2024年01月21日
    浏览(27)
  • Elasticsearch各种高级文档操作2

    本文来记录下Elasticsearch各种文档操作 在进行各种文档操作之前,我们先进行初始化文档数据的工作 match 模糊查询返回包含与搜索字词相似的字词的文档。 编辑距离是将一个术语转换为另一个术语所需的一个字符更改的次数。这些更改可以包括: 操作 示例 更改字符 (box →

    2024年01月21日
    浏览(73)
  • 原生语言操作和spring data中RestHighLevelClient操作Elasticsearch,索引,文档的基本操作,es的高级查询.查询结果处理. 数据聚合.相关性系数打分

    ​ Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasti

    2024年02月05日
    浏览(83)
  • Elasticsearch(六)--ES文档的操作(中)---修改文档

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

    2024年02月05日
    浏览(44)
  • Elasticsearch(五)--ES文档的操作(上)---写入文档

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

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

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

    2023年04月12日
    浏览(33)
  • Elasticsearch --- RestAPI、RestClient操作文档

    ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。官方文档地址:Elasticsearch Clients | Elastic 其中的Java Rest Client又包括两种:   创建数据库 创建项目 mapping映射分析 创建索引库,最关键的是mapping映射,而mapping映射要

    2024年02月07日
    浏览(45)
  • Elasticsearch 索引库与文档操作

    2023年04月19日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包