微服务day05(中) -- ES索引库操作

news2024/9/20 7:55:14

索引库就类似数据库表,mapping映射就类似表的结构。

我们要向es中存储数据,必须先创建“库”和“表”。

2.1.mapping映射属性

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

  • type:字段数据类型,常见的简单类型有:

    • 字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)

    • 数值:long、integer、short、byte、double、float、

    • 布尔:boolean

    • 日期:date

    • 对象:object

  • index:是否创建索引,默认为true

  • analyzer:使用哪种分词器

  • properties:该字段的子字段

其中index如果设置为false,表示不参与搜索,一些比如image的路径地址,邮箱等可以设置为false; 

例如下面的json文档:

{
    "age": 21,
    "weight": 52.1,
    "isMarried": false,
    "info": "黑马程序员Java讲师",
    "email": "zy@itcast.cn",
    "score": [99.1, 99.5, 98.9],
    "name": {
        "firstName": "云",
        "lastName": "赵"
    }
}

对应的每个字段映射(mapping):

  • age:类型为 integer;参与搜索,因此需要index为true;无需分词器

  • weight:类型为float;参与搜索,因此需要index为true;无需分词器

  • isMarried:类型为boolean;参与搜索,因此需要index为true;无需分词器

  • info:类型为字符串,需要分词,因此是text;参与搜索,因此需要index为true;分词器可以用ik_smart

  • email:类型为字符串,但是不需要分词,因此是keyword;不参与搜索,因此需要index为false;无需分词器

  • score:虽然是数组,但是我们只看元素的类型,类型为float;参与搜索,因此需要index为true;无需分词器

  • name:类型为object,需要定义多个子属性

    • name.firstName;类型为字符串,但是不需要分词,因此是keyword;参与搜索,因此需要index为true;无需分词器

    • name.lastName;类型为字符串,但是不需要分词,因此是keyword;参与搜索,因此需要index为true;无需分词器

2.2.索引库的CRUD

这里我们统一使用Kibana编写DSL的方式来演示。

2.2.1.创建索引库和映射

基本语法:
  • 请求方式:PUT

  • 请求路径:/索引库名,可以自定义

  • 请求参数:mapping映射

格式:

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

示例:
# 创建索引库
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"
        }
      }
    }
    }
  }
}

2.2.2.查询索引库

基本语法

  • 请求方式:GET

  • 请求路径:/索引库名

  • 请求参数:无

格式

GET /索引库名

示例

2.2.3.修改索引库

倒排索引结构虽然不复杂,但是一旦数据结构改变(比如改变了分词器),就需要重新创建倒排索引,这简直是灾难。因此索引库一旦创建,无法修改mapping

虽然无法修改mapping中已有的字段,但是却允许添加新的字段到mapping中,因为不会对倒排索引产生影响。

语法说明

PUT /索引库名/_mapping
{
  "properties": {
    "新字段名":{
      "type": "integer"
    }
  }
}

示例

2.2.4.删除索引库

语法:

  • 请求方式:DELETE

  • 请求路径:/索引库名

  • 请求参数:无

格式:

DELETE /索引库名

在kibana中测试:

2.2.5.总结

索引库操作有哪些?

  • 创建索引库:PUT /索引库名

  • 查询索引库:GET /索引库名

  • 删除索引库:DELETE /索引库名

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

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

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

相关文章

[Linux]多线程(在Linux中的轻量级进程(LWP),怎么使用线程(接口))

目录 一、在Linux中的轻量级进程(LWP) 二、多线程的接口 1.创建线程(pthread_create) 2.线程ID(pthread_self) 3.线程终止 终止某个线程而不终止整个进程的三种方法: return pthread_…

高架学习笔记之系统分析与设计

目录 一、结构化方法(SASD) 1.1. 结构化分析方法(SA) 1.1.1. 数据流图(DFD) 1.1.2. 实体联系图(E-R图) 1.1.3. 状态转换图(STD) 1.1.4. 数据字典 1.2. 结构化设计方法&#x…

Python Flask框架 -- 加载静态文件

在项目中,一般都会把静态文件放在 static 目录下,如 images、css、js 等,html 放在 templates 目录下。 .py: from flask import Flask, render_templateapp Flask(__name__)app.route(/static) def static_demo():return rend…

初识C++(一)

目录 一、什么是C 二、关键字: 三、命名空间 : 1. C语言存在的问题: 2. namespace关键字: 3. 注意点: 4.使用命名空间分为三种: 四、输入输出: 五、缺省函数: 1. 什么是缺省…

2024年【山东省安全员C证】考试试卷及山东省安全员C证复审模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 山东省安全员C证考试试卷是安全生产模拟考试一点通生成的,山东省安全员C证证模拟考试题库是根据山东省安全员C证最新版教材汇编出山东省安全员C证仿真模拟考试。2024年【山东省安全员C证】考试试卷及山东省…

《妈妈是什么》笔记(二) 让孩子自己做选择

经典摘录 孩子也会需要独立的空间做事情,求独立、求空间、求私隐 对于不管因为什么,别人在受到肯定和赞赏的时候,会对我们自己的心理带来因“比较”而产生的不适感甚至嫉妒感,进而在行为上影响了我们自己的节奏,产生一…

STL 容器元素减少但内存没有下降且不会自动释放,如何在运行时释放多余内存?【C++】

STL 容器元素减少但内存没有下降且不会自动释放,如何释放多余内存? 前言利用 swap 和匿名对象的性质进行收缩内存 前言 C程序里面我们经常会用到STL容器,容器在运行过程中可能会增长,导致它们分配的内存比实际存储的元素所需的内…

Linux源码包安装

目录 一、transmission源码包安装 二、 nginx源码包安装 一、transmission源码包安装 1、下载编译环境所需的软件包依赖 2、下载transmision源码包到用户主目录下 https://github.com/transmission/transmission/releases/download/4.0.5/transmission-4.0.5.tar.xz 3、解压…

python第三次项目作业

打印课堂上图案 判断一个数是否是质数(素数) 设计一个程序,完成(英雄)商品的购买(界面就是第一天打印的界面) 展示商品信息(折扣)->输入商品价格->输入购买数量->提示付款 输入付款金额->打印购买小票&a…

java 调用window操作系统文本转语音并生成播放文件

一、完整资源直接看这里&#xff1a; java调用window操作系统文本转语音并生成播放文件资源-CSDN文库 二、所需材料 材料一&#xff1a;最关键的&#xff0c;需要引用jacob包&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project x…

Vue2(七):超详细vue开发环境搭建(win7),nodejs下载与安装,安装淘宝镜像(报错已解决),配置脚手架

一、安装node.js 本来想粗略写一下的&#xff0c;但是搭建脚手架的时候&#xff0c;遇到了很多问题&#xff0c;浪费快两天时间&#xff0c;记录一下自己的解决办法希望对你们有帮助&#xff01; 1.下载nodejs 安装包下载链接【CNPM Binaries Mirror】 下载我划线的这个&am…

Linux(openEuler)部署SpringBoot前后端分离项目(Nginx负载均衡)

假如数据库在本地&#xff0c;没有放在Linux中 1.先把数据库中root的主机改成% 2.项目中的数据库链接配置换成本机ip 3.打包 4.把打包好的jar包放到Linux中 一般把jar包放到opt下 5.把前端部分拷贝到Linux的nginx中 5.1在package.json中修改build的值为图中这样 5.2同时由于在…

外包干了10天,技术倒退明显

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

SpringMVC 简介及入门级的快速搭建详细步骤

MVC 回顾 MVC&#xff0c;即Model-View-Controller&#xff08;模型-视图-控制器&#xff09;设计模式&#xff0c;是一种广泛应用于软件工程中&#xff0c;特别是Web应用开发中的架构模式。它将应用程序分为三个核心组件&#xff1a; Model&#xff08;模型&#xff09;&#…

经纪人资格认证考试资料

一、名词&#xff1a; 1. 自然人、个体工商户、演出经纪人、演出经纪单位、演出市场主体、演出市场客体、 2. 营业执照、行政许可证 3. 居间、代理、行纪&#xff1a;演出经纪机构、个体经纪人分别有哪些权限&#xff1f; 4. 自行举办&#xff1a;文艺表演团体、个体演员&am…

Shell脚本学习-if循环

最小化的if语句 无实际用途 if [ ] ;then echo fi 脚本解释 if 判断 [ ] 里面的条件是否成立 后面跟then&#xff0c;代表条件成立 如果在一行则使用分号隔离&#xff08;;&#xff09; 如果不在一行使用则直接在下一行驶入then即可。 如果条件成立则输出echo 后面…

罐头鱼AI视频矩阵运营获客系统|视频批量混剪

智能化运营&#xff0c;助力视频营销——AI视频矩阵运营系统全面解析 随着数字营销时代的到来&#xff0c;视频已成为各行业推广和营销的重要手段之一。为了更好地管理和发布视频内容&#xff0c;我们推出了全新的AI视频矩阵运营系统&#xff0c;集成了多项智能功能&#xff0c…

张桥社区组织“平安大讲堂”企业应急救护及消防主题培训

为进一步加强园区商户的平安生产意识&#xff0c;提升应急救护能力&#xff0c;在襄阳市民政局的指导和支持下&#xff0c;襄阳市和时代社会工作服务中心依托襄阳市“光明谷”社会组织助力共同缔造项目&#xff0c;联合樊城区红十字会、樊城区点爱志愿者协会在张桥社区“美世界…

第十二届蓝桥杯省赛CC++ 研究生组

十二届省赛题 第十二届蓝桥杯省赛C&C 研究生组-卡片 第十二届蓝桥杯省赛C&C 研究生组-直线 第十二届蓝桥杯省赛C&C 研究生组-货物摆放 第十二届蓝桥杯省赛C&C 研究生组-路径 第十二届蓝桥杯省赛C&C 研究生组-时间显示 第十二届蓝桥杯省赛C&C 研究生组…

Unity---Lua语言

Lua Binaries Download 13.2 逻辑热更新——Lua1-3_哔哩哔哩_bilibili nil表示空 只有false和nil为false&#xff0c;其他值都为true ..连接两个字符串