【ElatsticSearch】ES索引库与文档的增删改查

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

一、操作索引库

【ElatsticSearch】ES索引库与文档的增删改查,ElasticSearch,elasticsearch,大数据,搜索引擎

1、mapping映射属性

mapping是对索引库中文档的约束,常见的mapping属性包括:

  • type:字段数据类型
# 常见的简单类型有:
字符串: 又可细分为text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址,即拆开就没意义了)
数值: long、integer、short、byte、double、float、
布尔: boolean
日期: date
对象: object
  • index:是否创建(倒排)索引,默认为true
  • analyzer:使用哪种分词器
  • properties:该字段的子字段

举例:

{
    "age": 23,
    "weight": 52.1,
    "isMarried": false,
    "info": "难说",
    "email": "9527@csdn.cn",
    "score": [99.1, 99.5, 98.9],
    "name": {
        "firstName": "哈",
        "lastName": "哈"
    }
}

注意ES中并没有数组类型,"score": [99.1, 99.5, 98.9] ,但是允许某个类型的字段有多个值,只管括号里元素的类型,即这里的score是double类型。

2、索引库的CRUD


创建索引库:

ES中通过Restful请求操作索引库、文档。请求内容用DSL语句来表示。创建索引库和mapping的DSL语法如下:

PUT /索引库名称
{
  "mappings": {
    "properties": {
      "字段名1":{
        "type": "text",
        "analyzer": "ik_smart"
      },
      "字段名2":{
        "type": "keyword",
        "index": "false"
      },
      "字段名3":{
        "properties": {
          "子字段": {
            "type": "keyword"
          }
        }
      },
      // ...略
    }
  }
}

示例:

PUT /code9527
{
  "mappings": {
    "properties": {
      "info":{
        "type": "text",
        "analyzer": "ik_smart"  #index用默认的,这里不写了
      },
      "email":{
        "type": "keyword",  #email肯定不能分词,类型为字符串下的keyword
        "index": "false"  # keyword不用指定分词器
      },
      "name":{
        "properties": {   # name字段有嵌套
          "firstName": {
            "type": "keyword"
          },
          "lastName": {
            "type": "keyword"
          }
        }
      },
      // ... 略
    }
  }
}

【ElatsticSearch】ES索引库与文档的增删改查,ElasticSearch,elasticsearch,大数据,搜索引擎
创建的这一整个索引,也就像MySQL中的一张表了。


查询索引库:

GET /索引库名 

举例:
【ElatsticSearch】ES索引库与文档的增删改查,ElasticSearch,elasticsearch,大数据,搜索引擎


删除索引库:

DELETE /索引库名 

举例:

【ElatsticSearch】ES索引库与文档的增删改查,ElasticSearch,elasticsearch,大数据,搜索引擎

修改索引库:

ES不支持修改索引库,但可以添加新的字段,如:

PUT /索引库名/_mapping
{
  "properties": {
    "新字段名":{   # 注意一定是新字段,否则ES会认为你在修改索引库,会拒绝
      "type": "integer"
    }
  }
}

示例:

PUT /code9527/_mapping
{
  "properties": {
    "age":{
      "type": "integer"
    }
  }
}

【ElatsticSearch】ES索引库与文档的增删改查,ElasticSearch,elasticsearch,大数据,搜索引擎
小结:

【ElatsticSearch】ES索引库与文档的增删改查,ElasticSearch,elasticsearch,大数据,搜索引擎

二、文档操作

1、新增文档

类比往MySQL的table里insert数据,语法:

# 文档id不写自动生成,但不建议这么写
POST /索引库名/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    "字段3": {
        "子属性1": "值3",
        "子属性2": "值4"
    },
    // ...
}

举例:

POST /code9527/_doc/1
{
    "info": "code9527",
    "email": "9527@csdn.cn",
    "name": {
        "firstName": "code",
        "lastName": "9527"
    }
}

【ElatsticSearch】ES索引库与文档的增删改查,ElasticSearch,elasticsearch,大数据,搜索引擎
新增文档还有两种语法:

POST /索引库名/_create/文档id

2、查询文档

语法:

# 查单条文档
GET /索引库名/_doc/文档id 

# 查所有文档
GET /索引库名/_search

举例:
【ElatsticSearch】ES索引库与文档的增删改查,ElasticSearch,elasticsearch,大数据,搜索引擎

3、删除文档

语法:

DELETE /索引库名/_doc/文档id 

举例:
【ElatsticSearch】ES索引库与文档的增删改查,ElasticSearch,elasticsearch,大数据,搜索引擎

4、修改文档


全量修改:

根据传入的id,删除旧文档,再添加新文档(delete from where xx=文档id + insert table …):

PUT /索引库名/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    // ... 略
}

# 和新增文档语法一样,只是请求方式从POST变成了PUT

举例:

PUT /code9527/_doc/1
{
    "info": "code9527+++",
    "email": "9527@csdn.cn",
    "name": {
        "firstName": "code",
        "lastName": "9527"
    }
}

【ElatsticSearch】ES索引库与文档的增删改查,ElasticSearch,elasticsearch,大数据,搜索引擎

注意,当传入的文档id不存在,先删后改就成了空删,相当于增加文档了,是个新增操作了。


增量修改:

修改指定字段值,语法:

POST /索引库名/_update/文档id
{
    "doc": {
         "字段名": "新的值",
    }
}

举例:

POST /code9527/_update/1
{
  "doc": {
    "email": "code9527@csdn.cn"
  }
}

【ElatsticSearch】ES索引库与文档的增删改查,ElasticSearch,elasticsearch,大数据,搜索引擎

5、注意点

当向ES插入的文档中,字段没有对应的mapping,如:

POST /code9527/_doc/2
{
    "info": "code9527",
    "email": "9527@csdn.cn",
    "name": {
        "firstName": "code",
        "lastName": "9527"
    },
    "city":"天津",  # 没有mapping的字段
    "birtyday":"2000-01-28"  # 多了字段
}

结果:
【ElatsticSearch】ES索引库与文档的增删改查,ElasticSearch,elasticsearch,大数据,搜索引擎
GET一下:

【ElatsticSearch】ES索引库与文档的增删改查,ElasticSearch,elasticsearch,大数据,搜索引擎
即: 插入文档时,es会检查文档中的字段是否有mapping,如果没有则按照默认mapping规则来创建索引。 规则如下:
【ElatsticSearch】ES索引库与文档的增删改查,ElasticSearch,elasticsearch,大数据,搜索引擎
如果默认mapping规则不符合你的需求,一定要自己设置字段mapping


小结:

【ElatsticSearch】ES索引库与文档的增删改查,ElasticSearch,elasticsearch,大数据,搜索引擎文章来源地址https://www.toymoban.com/news/detail-519329.html

到了这里,关于【ElatsticSearch】ES索引库与文档的增删改查的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ES-索引的增删改查

    目的:存储学生的分数信息,且支持 搜索 “姓名、课程名、分数” 1.1.1 自动创建索引 put 数据时,es会自动创建索引(不推荐) 1.1.2 手动创建索引 user_course 为索引名 courses 使用 nested , 支持 course=“数学” grade=98的查询 nested的作用,参考后续章节 1.4.1 创建新索引 1.4.2 迁移

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

    2023年04月19日
    浏览(10)
  • ElasticSearch文档(document)在index上的增删改查

    ElasticSearch文档(document)在index上的增删改查

    在 Elasticsearch 中,Document(文档)是存储在索引中的最小数据单元。它是一条具有结构化数据的记录,以 JSON(JavaScript Object Notation)格式表示。 每个文档都有一个唯一的标识符,称为 _id。如果你没有为文档提供自定义的 _id 值,Elasticsearch 将为其生成一个唯一的标识符。 文档

    2024年02月16日
    浏览(8)
  • 使用kibana来创建ElasticSearch的索引库与文档的命令

    使用kibana来创建ElasticSearch的索引库与文档的命令

    本篇博客主要以介绍使用kibana来创建ElasticSearch的索引库与文档的命令语句 操作 效果 创建索引表 查询(索引)表结构 修改(索引)表结构 删除表结构 操作 效果 插入文档 修改文档 查询文档 检索文档 删除文档 |

    2024年01月18日
    浏览(30)
  • elasticsearch[一]-索引库操作(轻松创建)、文档增删改查、批量写入(效率倍增)

    elasticsearch[一]-索引库操作(轻松创建)、文档增删改查、批量写入(效率倍增)

    在 elasticsearch 提供的 API 中,与 elasticsearch 一切交互都封装在一个名为 RestHighLevelClient 的类中,必须先完成这个对象的初始化,建立与 elasticsearch 的连接。 分为三步: 1)引入 es 的 RestHighLevelClient 依赖: 2)因为 SpringBoot 默认的 ES 版本是 7.6.2,所以我们需要覆盖默认的 ES 版本

    2024年01月16日
    浏览(13)
  • es elasticsearch 新增更新索引,新增更新文档

    先新增索引 新增映射  或者上述两步和为一步(创建索引,及创建mapping) 只能增加原有不存在的字段 创建一个全新的索引,映射包含调整后的字段或类型 将原有索引的数据迁移到新的索引 删除原有索引 将新的索引的别名设置为原来索引相同名称 创建一个 重建文档(全量

    2024年02月11日
    浏览(13)
  • 【ES】Elasticsearch核心基础概念:文档与索引

    【ES】Elasticsearch核心基础概念:文档与索引

    es的核心概念主要是:index(索引)、Document(文档)、Clusters(集群)、Node(节点)与实例,下面我们先来了解一下Document与Index。 在讲解Document与Index概念之前,我们先来了解一下RESTful APIs,因为下面讲解Document和Index的时候会使用到。 当我们把es服务器启动起来之后,要怎么调用呢?

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

    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日
    浏览(32)
  • elasticsearch(ES)分布式搜索引擎01——(初识ES,索引库操作和文档操作,RestClient操作索引库和文档)

    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日
    浏览(13)
  • ElasticSearch 实战:ES查询索引文档的6种方法

    在Elasticsearch中,查询索引文档的方法多种多样,这里列举了6种常见的查询方法,其中包括: 简单查询(String Query) 这是最基本的全文搜索,只需在URL后面附加查询字符串即可。例如,对索引 my_index 中的所有文档执行模糊匹配查询: Match Query 类似于简单查询,但提供了更多的

    2024年04月12日
    浏览(13)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包