ElasticSearch总结2

news2025/1/13 2:36:14

一、创建索引库: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"
  }
}

                         

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

        ​​​​​​​        

        ​​​​​​​        

八、 

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

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

相关文章

Android Studio入门级教程(详细)【小白必看】[通俗易懂]

Android Studio如何使用 本文主要讲解一下Android Studio使用方法 步骤: 1.建立项目 首先点击new——new project新建项目 选择想要创建的Android 的模板,建议选择empty activity(空模板),然后next Name&#xff1…

(附源码)超级简单的SSM大学生创新创业管理系统,包含架构图、设计图、论文。

下面一大堆图和步骤看起来复杂,但是只要跟着教程走,都能部署成功。数据库设计简单明了,代码注释完整,小白也能看得懂,纯小白需要费点功夫。 项目结构图 内容截图: 用到软件 Jdk1.8 Mysql IntelliJ IDEA…

Python urllib 爬虫入门(1)

本文主要为Python urllib类库函数和属性介绍及一些简单示例。 目录 urllib爬取网页 简单示例 写入文件 其他读取方法 readline函数 readlines函数 response属性 当前环境信息 返回状态码 返回url地址 对url进行编码与解码 写入文件 总结 urllib爬取网页 通过pyth…

form1弹出子窗体form2,拖动子窗体判断是否离开父窗体区域,含源码(学习笔记)

一、效果(进入和离开) 子窗体到达父窗体边缘时变色。 二、代码分析 判断父窗体的目的,可以控制子窗体要随父窗体走。上面代码需要加以处理。 如:this.Location new Point(parentPoint.X distanceFromEdge, this.Location.Ydis…

NCC导入导出开发

📣NCC导入导出开发 ✨1. 导入流程图 ✨2. 实现步骤 🐴1. 前端代码实现。 🐴2. 配置文件创建与设置。 🐴3. 后端代码实现。 🐴4. 注册后端代码类。

力扣---二叉树的右视图

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4]示例 2: 输入: [1,null,3] 输出: [1,3]示例 3: 输入: [] 输出: []实现方法&…

双非本科自述: 无竞赛国奖,怎么逆袭腾讯字节

写在前面 大家好,我是青玉白露。 在这个充斥着精英主义色彩的社会里,"双一流"大学和耀眼奖项似乎成了走向职业成功、大厂的不二法门及必备之物。 然而,今天我要分享的,是一个打破常规的故事,是一个关于普…

AQS共享模式之CyclicBarrier

概念:CyclicBarrier翻译为循环(屏障/栅栏),当一组线程到达一个屏障(同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会打开,所有被屏障拦截的线程才会继续工作。 设计目的:和Co…

什么牌子的洗地机质量比较好?四大热门品牌实测,快看过来

随着科技的发展,各种智能家居产品层出不穷,为我们的生活带来了诸多便利。近年来,在家庭清洁领域,洗地机成为了热门选择,可是什么牌子的洗地机质量比较好呢?我们一起来看看吧。 洗地机选购技巧:…

大数据中的项目数据采集

Datax介绍 官网: DataX/introduction.md at master alibaba/DataX GitHub DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。 DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS…

【漏洞复现】若依druid 未授权访问漏洞

0x01 产品简介 若依(Ruoyi)框架是一款基于Spring Boot、Spring Cloud、OAuth2与JWT鉴权等核心技术的快速开发平台。它支持多种安全框架和持久化框架,并采用前后端分离的模式进行开发,具备高度的灵活性和可扩展性。若依框架提供了…

VTK 的可视化方法:颜色映射

VTK 的可视化方法:颜色映射 VTK 的可视化方法:颜色映射颜色映射过程vtkDataSetvtkDataSetAttributesvtkLookUpTablevtkScalarBarActor实例参考 VTK 的可视化方法:颜色映射 颜色映射的操作对象是数据集中的标量属性。它是一种常用的标量算法。…

.net core ef 连表查询

Information和TypeInfo连表查询 类似: select st.Title1,si.* from [Star_Information] si left join Star_TypeInfo st on si.typeId2st.id 先在EfCoreDbContext.cs配置 protected override void OnModelCreating(ModelBuilder builder){base.OnModelCreating(b…

C++数据结构——二叉搜索树

二叉搜索树的概念 二叉树又称二叉排序树(BST,Binary Search Tree),它是一颗空树,也可以是一颗具有下列性质的二叉树: 1.假如它的左子树不为空,那么左子树上的结点值都小于根结点的值。 2.假如它的右子树不为空&…

K8S controller编写之Informer的原理+使用[drift]

概念 核心思想(重点)watch-list 机制 Watch 通过 HTTP 协议与 Kubernetes API Server 建立长连接,接收 Kubernetes API Server 发来的资源变更事件。Watch 操作的实现机制使用 HTTP 协议的分块传输编码——当 client-go 调用 Kubernetes API…

nacos(docker部署)+springboot集成

文章目录 说明零nacos容器部署初始化配置高级配置部分访问权限控制命名空间设置新建配置文件 springboot配置nacos添加依赖编写测试controller 说明 nacos容器部署采用1Panel运维面板,进行部署操作,简化操作注意提前安装好1Panel和配置完成docker镜像加…

三、VUE数据代理

一、初识VUE 二、再识VUE-MVVM 三、VUE数据代理 Object.defineProperty() Object.defineProperty() 静态方法会直接在一个对象上定义一个新属性,或修改其现有属性,并返回此对象。 Object.defineProperty() 数据代理 通过一个对象代理另一个对象中属…

CSS 06

精灵图 为什么要使用精灵图 一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度,因此,为了有效地减少服务…

Python来计算 1,2,3,4 能组成多少个不相同且不重复的三位数?

我们今天的例子是 有 1,2,3,4 四个数字,它们能组成多省个互不相同且无重复的三位数?都分别是多少? 话不多说,我们先上代码 num 0 # 我们写了三个for循环,表示生成的三位数 for i…

YOLOv5模型训练处理自己数据集(标签统计、数据集划分、数据增强)

上一节中我们讲到如何使用Labelimg工具标注自己的数据集,链接:YOLOv5利用Labelimg标注自己数据集,完成1658张数据集的预处理,接下来将进一步处理这批数据,通常是先划分再做数据增强。 目录 一、统计txt文件各标签类型…