ElasticSearch总结2

一、创建索引库:PUT

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

        整个jason 里边,它有一个叫mapping的属性,代表的是映射。映射里边有properties代表就是字段。可以看到这里只有三个字段,然后每个字段都有一些自己的信息: type、analyzer、index...

我们先来复习一下mapping的常见属性: 

     需要注意的是,第三个字段这里还加了一个properties代表的子字段,这种就是带对象嵌套的方式: Object要结合properties声明子字段 

                                         

代码:

PUT /heima
{
  "mappings":{
    "properties": {
      "info":{
        "type":"text",
        "analyzer": "ik_smart"
      },
      "email":{
        "type":"keyword",
        "index": false
      },
      "name":{
        "type":"object",
        "properties": {
          "firstName":{
            "type":"keyword"
          },
          "lastName":{
            "type":"keyword"
          }
        }
      }
    }
  }
}

                                成功: 

    

二、查看、删除索引库: GET/DELETE

        

GET /heima 

{
  "heima" : {
    "aliases" : { },
    "mappings" : {
      "properties" : {
        "email" : {
          "type" : "keyword",
          "index" : false
        },
        "info" : {
          "type" : "text",
          "analyzer" : "ik_smart"
        },
        "name" : {
          "properties" : {
            "firstName" : {
              "type" : "keyword"
            },
            "lastName" : {
              "type" : "keyword"
            }
          }
        }
      }
    },
    "settings" : {
      "index" : {
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        },
        "number_of_shards" : "1",
        "provided_name" : "heima",
        "creation_date" : "1714394468076",
        "number_of_replicas" : "1",
        "uuid" : "jgQAdwONRLqYAr2XfT9ZSA",
        "version" : {
          "created" : "7120199"
        }
      }
    }
  }
}

                 DELETE /heima           删除后再查寻:GET /heima 

 

 三、添加字段:PUT /索引库名/_mapping

        索引库和mapping一旦创建无法修改,但是可以添加新的字段,语法如下:

        

        数据库里边一个表创建完了,理论还可以去修改表结构,但是在生产环境下,数据库一般情况下,我们也是尽量禁止去修改的,因为修改它的这个性能是影响非常大,可能会导致整个数据库不可用。 ES做的更彻底,索引库创建完了以后,是不允许修改的,当它的mapping映射都已经定义好了,ES会基于mapping去创建倒排索引。如果说你要去修改一个字段的话,可能导致我们原有的整个倒排索引失效,所以ES里边,是禁止修改索引库的,ES它虽然禁止你直接去修改原有的字段,但它允许你修改索引库的过程中添加新字段,它的语法是这样子的:

 代码:
#修改索引库,添加新的字段
PUT /heima/_mapping
{
  "properties":{
    "age":{
      "type":"integer"
    }
  }
}

         再调用GET /heima :多了一个age的属性:

                                

索引库和mapping一旦创建无法修改:

        但是如果说你现在把age再添加一次,你把它的类型改成long,这等于是在修改索引库结构,从integer改成long,报错了:  

四、添加文档:POST /索引库名/_doc/文档id

        新增文档的DSL语法:它是一个post请求,路径是一个索引库名,加上一个_doc,这是固定写法。后边跟上文档的i d, 其实就是告诉Kibana:我要新增的这个文档要到哪个库里面去。

        我这个文档的id是什么? 要写在路径的后边,这是Restful一种语法方式。如果你不加这个id,他就会认为你这个文档没有i d,将来ES会给你随机生成一个id:

代码:
#插入文档

POST /heima/_doc/1
{
  "info":"程序员java",
  "email":"123456@qqq.com",
  "name":{
    "firstName":"张三",
    "lastName":"李四"
  }
}

                        ​​​​​​​        

再插入一条不带id的:

POST /heima/_doc
{
  "info":"c++程序员",
  "email":"6666@qq.com",
  "name":{
    "firstName":"王五",
    "lastName":"赵六"
  }
}

五、查询、删除文档 GET(DELETE)  /索引库名/_doc/文档id

查询代码: 

 GET /heima/_doc/1 

       这个信息给大家解读一下,_index代表他所在的索引库是“heima”,然后version1,这里其实有这个版本控制,每做一次文档修改,将来这个版本就会+1。然后_source就是你插入的那个原始文档,注意,这个_source就是你插入的原始文档。大家看是jason风格的原始文档:  

        ​​​​​​​        

 删除代码:

        DELETE /heima/_doc/1

                 

        可以看见删除后版本号+1,再次执行插入操作,版本号又+1 :

        ​​​​​​​        ​​​​​​​ 

  六、更新文档

方式一:全量修改,会删除旧文档:PUT /索引库名/_doc/文档id

  1、 全量修改和新增POST只有请求方式不同

  2 、如果传的这个id在索引库里不存在对应文档,这个删除的动作不会执行,新增不受影响

代码:
#插入文档

POST /heima/_doc/2
{
  "info":"程序员javSa",
  "email":"123456@qqq.Scom",
  "name":{
    "firstName":"张三S",
    "lastName":"李四S"
  }
}

#更新文档
PUT /heima/_doc/2
{
  "info":"golang程序员",
  "email":"99999@qq.com",
  "name":{
    "firstName":"zhangsan",
    "lastName":"lisi"
  }
}


 如果这个id不存在,那它就会变成新增操作:

方式二:增量修改,修改指定字段值:POST /索引库名/_update/文档id

代码: 

POST /heima/_update/3
{
  "doc":{
    "email":"aaaa@qq.com"
  }
}

                         

七、 索引库、文档操作总结:

        ​​​​​​​        

        ​​​​​​​        

八、 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++入门系列-缺省参数

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 缺省参数的概念 缺省参数是生命或者定义函数时为函数的参数指定一个缺省值,在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用…

一单利润100+,不起眼的小生意,却能闷声发财!

今天,我想向大家介绍一个看似不太热门,但实际上需求很高的项目——酒店代订。这个项目其实很早以前就已经有人开始尝试了,但可能并没有被大众所熟知。简而言之,酒店代订就是帮助他人通过我们来预订他们想要入住的酒店。 当客户将…

ThinkPHP5 SQL注入漏洞敏感信息泄露漏洞

1 漏洞介绍 ThinkPHP是在中国使用极为广泛的PHP开发框架。在其版本5.0&#xff08;<5.1.23&#xff09;中,开启debug模式&#xff0c;传入的某参数在绑定编译指令的时候又没有安全处理&#xff0c;预编译的时候导致SQL异常报错。然而thinkphp5默认开启debug模式&#xff0c…

Allegro如何将铜皮复制到其他层

如何将铜皮复制到其他层 方法一&#xff1a; 第一步&#xff1a;选择需要复制的铜皮&#xff0c;然后按下CtrlC 第二步&#xff1a;选择要粘贴到的层面&#xff0c;然后按Ctrl V 将在所在层面创建一个新的铜皮&#xff0c;几何形状与原铜皮完全一样 方法二&#xff1a; 第一…

基于SSM的个人博客系统(二)

目录 第四章 系统设计 4.1 系统总流程 4.2 博主用例 4.3 游客用例 4.4 系统类 一、博客类 二、博客类型类 三&#xff0c;评论类&#xff1a; 四&#xff0e;友情链接类 4.5 E-R图 4.6 系统表设计 前面内容请移步 基于SSM的个人博客系统&#xff08;一&#xff09;…

docker mysql更新升级版本

一、环境说明 操作系统&#xff1a;Centos7 数据库版本&#xff1a;MySql 8.0.22 数据库中数据量不大&#xff0c;处于开发/测试环境&#xff0c;风险较低 二、升级原因 升级是因为测评漏洞&#xff0c;在进行国家三级等级保护测评过程中&#xff0c;漏扫发现多个MySql漏洞…

(十五)Servlet教程——Servlet文件上传

JSP和HTML标签一起使用&#xff0c;来允许用户把文件上传到服务器。 首先我们需要创建一个前端界面&#xff0c;创建上传文件表单时&#xff0c;需要注意以下几点&#xff1a; (1) 表单的method属性必须设置为POST方法&#xff0c; 不能使用GET方法。 (2) 表单enctype属性应该…

【Unity面试篇】Unity 面试题总结甄选 |Unity基础篇 | ❤️持续更新❤️

2.2 前言 关于Unity面试题相关的所有知识点&#xff1a;&#x1f431;‍&#x1f3cd;2023年Unity面试题大全&#xff0c;共十万字面试题总结【收藏一篇足够面试&#xff0c;持续更新】为了方便大家可以重点复习某个模块&#xff0c;所以将各方面的知识点进行了拆分并更新整理…

19 做好微服务间依赖的治理和分布式事务

在前两讲里&#xff0c;分别从微服务的对外接口、消息消费以及微服务自身的相关编码规范上阐述了“防备上游、做好自己”这两个准则如何落地。 在本讲里&#xff0c;将会讲解为什么要“怀疑下游”&#xff0c;以及有哪些手段可以落地此条准则。此外&#xff0c;还会介绍在进行…

基于SSM的个人博客系统(三)

目录 第五章 系统实现 5.1 登录模块 5.1.1 博主登录 5.2 博客管理模块&#xff1a; 5.2.1 博客查询 5.2.2 博客新建 5.2.3 博客修改 5.2.4 博客删除 5.3 博客类别管理模块 前面内容请移步 基于SSM的个人博客系统&#xff08;二&#xff09; 个人博客系统的设计…

Qt+Ubuntu20.04:打包qt

打包程序 参考 qt项目在Linux平台上面发布成可执行程序.run_qt.run不是虚拟机的配置文件-CSDN博客 Linux下Qt程序的打包发布(1)-不使用第三方工具 - 知乎 (zhihu.com) 过程 1、Release编译 先将你的程序在release下编译通过&#xff0c;保证下面打包的程序是你最新的。 2…

沐风老师3DMAX一键生成桌子插件TableMaker使用方法

3DMAX一键生成桌子插件TableMaker使用教程 3DMAX一键生成桌子插件TableMaker&#xff0c;参数化方式快速创建各种样式桌子模型。 【适用版本】 3dMax2011-2025&#xff08;不仅限于此范围&#xff09; 【安装方法】 3DMAX一键生成桌子插件无需安装&#xff0c;使用时直接拖动…

GCB | 陆地生态系统C:N:P化学计量对降水变化的响应

西北农林科技大学水保学院上官周平研究员团队在陆地生态系统C:N:P化学计量对降水变化的响应方面取得新进展&#xff0c;并以“C:N:P stoichiometry of plants, soils, and microorganisms: Response to altered precipitation”为题发表在国际生态环境领域著名期刊Global Chang…

SpringBoot之自定义注解参数校验

SpringBoot之自定义注解参数校验 为什么要自定义注解 我这里先引入一个例子&#xff0c;就比如我现在要写文章&#xff0c;文章也许写完正要发布&#xff0c;也可以是还没写完正要存草稿&#xff0c;前端往后端发送数据&#xff0c;如果前端的state不是草稿或者已发布状态&…

C语言中的趣味代码(五)

我想以此篇结束关于C语言的博客&#xff0c;因为在C语言拖得越久越不能给大家带来新的创作&#xff0c;在此我也相信大家对C语言已经有了一个新的认知。进入正题&#xff0c;在这一篇中我主要编一个“英语单词练习小程序”来给大家展开介绍&#xff0c;从测试版逐步改良&#x…

C语言(操作符)1

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

【JavaWeb】Day62.SpringBootWeb案例——基础登录功能

登录功能 需求 在登录界面中&#xff0c;我们可以输入用户的用户名以及密码&#xff0c;然后点击 "登录" 按钮就要请求服务器&#xff0c;服务端判断用户输入的用户名或者密码是否正确。如果正确&#xff0c;则返回成功结果&#xff0c;前端跳转至系统首页面。 接…

Python数据分析系列(一):python入门

文章目录 前言一、Python运行方式二、Python集成开发环境(IDE)三、Python开发平台—Anaconda1、下载2、安装3、使用3.1 Anaconda应用介绍3.2 配置Python库3.3 集成开发环境使用3.3.1.Spyder3.3.2 Jupyter Notebook四、Python入门概念1、入门函数:print()与input()2、python书写…

SAP PP学习笔记08 - 作业区(工作中心Work Center),作业区Customize

上一章讲了作业手顺&#xff08;工艺路线Routing&#xff09;。 SAP PP学习笔记07 - 作业手顺&#xff08;工艺路线Routing&#xff09;-CSDN博客 这一章来讲讲作业区&#xff08;工作中心 Work Center&#xff09;。 1&#xff0c;作业区&#xff08;工作中心&#xff09;中…

挑战一周完成Vue3项目Day3: 品牌管理+平台属性管理+SPU管理+SKU管理

一、真实接口替换mock接口 &#xff08;1&#xff09;替换各个环境下的服务器地址&#xff08; .env.development、.env.production、.env.test &#xff09; VITE_SERVE"http://sph-api.atguigu.cn" &#xff08;2&#xff09; 配饰代理跨域&#xff1a;vite.con…