当前位置: 首页 > news >正文

Elasticsearch索引库和文档的相关操作

前言:最近一直在复习Elasticsearch相关的知识,公司搜索相关的技术用到了这个,用公司电脑配了环境,借鉴网上的课程进行了总结。希望能够加深自己的印象以及帮助到其他的小伙伴儿们😉😉。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
小威在此先感谢各位大佬啦~~🤞🤞

在这里插入图片描述

🏠个人主页:小威要向诸佬学习呀
🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
目前状况🎉:24届毕业生,曾经在某央企公司实习,目前在某税务公司实习👏👏

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘

以下正文开始
在这里插入图片描述

文章目录

  • mapping映射属性
  • 操作索引库
    • 创建索引库
    • 查询,删除索引库
    • 修改索引库
  • 操作文档
    • 增删查文档
    • 修改文档

在这里插入图片描述

mapping映射属性

前面说到,Mapping映射是索引中对文档的约束,类似于数据库表中对字段的约束。那么mapping都有哪些常见的属性呢:

type:type属性是用来定义字段数据类型结构的,常见的简单类型有:

  • 字符串:text(可以分词的文本),keyword(精确值,不可分词)
  • 数值:byte,short,integer,long,float,double
  • 布尔型:boolean
  • 日期型:date
  • 对象型:object

index:用来说明是否创建索引,不设置时默认为true(创建索引)
analyzer:使用哪种分词器,ik_smart(最少切分,粗粒度),ik_max_word(最细切分,细粒度)
properties:字段中的子字段
在这里插入图片描述

操作索引库

操作索引库和操作文档的命令略微简单一些,以下简单做个概述吧。

创建索引库

在我们学习ssm框架的时候,用到了restful请求风格,在es中,也是通过restful请求来操作索引库和文档的。请求的内容用DSL语句表示,创建索引库的DSL语句如下:
在这里插入图片描述

由上可以看到,当type类型为"text"时,才能设置分词器类型,当字段类型为“keyword”时,不会设置。在字段的内部可以有子字段的。

举个栗子,我们对下面栗子编写DSL语句:

{
“info”: “小威要向诸佬学习”,
“email”: “xiaoweibest.cn”
“name”:{
“firstname”: “小”,
“lastname”: “威”
}

}

分析:info中的内容是需要分词的,email中的内容不需要,name中同时又有两个子属性:

PUT /xiaowei
{"mappings":{"properties":{"info": {"type": "text","analyzer": "ik_smart"},"email": {"type": "keyword","index": false},"name": {"type": "object","properties": {"firstname": {"type": "keyword"},"lastname": {"type": "keyword"}}}}}
}

运行即可创建索引库:
在这里插入图片描述

查询,删除索引库

查看索引库仅需要通过简单的Get命令,后面跟要查询的索引库名称即可,即Get 索引库名。以刚创建的索引库为例:

# 查看数据库
GET /xiaowei

在这里插入图片描述
想必很容易猜的出删除索引库的命令,佬想对了,删除索引库命令就是DELETE 索引库名称,即:

# 删除索引库
DELETE /xiaowei

在这里插入图片描述

修改索引库

在es中,索引库和mapping映射创建后无法对其进行修改,因为创建后,es会根据映射为其创建倒排索引,一旦修改索引库和mapping,倒排索引会失效,但是可以为索引库添加新的字段:
在这里插入图片描述
添加类型为long的年龄字段:

PUT /xiaowei/_mapping
{"properties": {"age": {"type": "long"}}
}

将年龄字段类型修改为integer并运行:

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

运行后会发现会提示不能修改索引库:
在这里插入图片描述

在这里插入图片描述

操作文档

索引库中文档的操作DSL语法也比较简单,这里直接以例子的形式记录知识

增删查文档

添加文档的语法比较简单,和上面类似:
在这里插入图片描述

#新增文档
POST /xiaowei/_doc/1
{"info": "小威","email": "xiaowei.cn","name": {"firstname": "小","lastname": "威"}
}

在这里插入图片描述
由上图可以看到创建文档成功,并且会有版本号version,在每次改变文档时,版本号都会进行+1操作。
当然,查询和删除文档和上面的例子命令一样,查询文档GET/索引库名称/_doc,删除文档DELECT/索引库名称/_doc。

GET /xiaowei/_doc/1

在这里插入图片描述

DELECT /xiaowei/_doc/1

在这里插入图片描述
如上图,每次操作文档version的值都会进行+1。

修改文档

修改文档有两种方式,一种为PUT命令全量覆盖,一种为POST命令局部修改。
在这里插入图片描述
使用PUT命令操作文档时,如果只是PUT了一个字段,其他的字段就被覆盖了,相当于删除了之前旧的文档,重新创建了一个新文档。
而POST命令可以局部修改想要改变的值,即增量修改,修改指定字段的值。。

在这里插入图片描述
比如讲刚才添加文档的email值首字母大写,DSL代码如下:

POST /xiaowei/_update/1
{"doc": {"email": "XiaoWei.cn"}
}

运行结果:
在这里插入图片描述
本篇文章就先分享到这里了,后续会继续分享其他方面的知识,感谢大佬认真读完支持咯~
在这里插入图片描述

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论😁
希望能和诸佬们一起努力,今后我们顶峰相见🍻
再次感谢各位小伙伴儿们的支持🤞

在这里插入图片描述

http://www.lryc.cn/news/4738.html

相关文章:

  • 使用Python,Opencv检测图像,视频中的猫
  • 浅谈域名和服务器集约化管理的误区
  • 迪赛智慧数——柱状图(正负条形图):20212022人才求职最关注的因素
  • 网络安全-黑帽白帽红客与网络安全法
  • Xpath元素定位之同级节点,父节点,子节点
  • 华为OD机试 - 挑选字符串(Python)| 真题+思路+代码
  • python笔记-- “__del__”析构方法
  • 支付系统核心架构设计思路(万能通用)
  • python实现mongdb的双活
  • LeetCode-110. 平衡二叉树
  • Python蓝桥杯训练:基本数据结构 [链表]
  • 华为OD机试 - 找字符(Python)| 真题+思路+代码
  • 使用继承与派生的6大要点
  • 加一-力扣66-java高效方案
  • 记一次 .NET 某游戏网站 CPU爆高分析
  • 集群使用——资源管理和租户创建
  • 谷歌浏览器登录失败,提示【无法同步到“...@gmail.com”】
  • 75 111111
  • 分销系统逻辑
  • MySQL视图特性
  • RabbitMQ详解(二):Docker安装RabbitMQ
  • 如何使用代码注释:关于JavaScript与TypeScript 注释和文档的自动生成
  • Echarts 设置面积区域图(areaStyle核心)
  • pandas——字符串处理【建议收藏】
  • 反射,枚举,lambda表达式
  • .Net Core对于RabbitMQ封装分布式事件总线
  • GPIO功能描述
  • 指派问题与匈牙利法讲解
  • day5——冒泡排序,选择排序和插入排序的学习
  • Windows 数据类型 (Windows Data Types)