【Elasticsearch<二>✈️✈️】基本属性概念与MySQL数据库的不同之处

目录

🍸前言

🍻一、Elasticsearch 基本属性

        1.1 ES VS MySQL

        1.2 ES 属性概念

        1.3 ES 的增删改查

🍺二、自动补全场景

        2.1 场景举例

        2.2 使用数据分词器

        2.3 查询的流程

        2.4 整个查询流程图

 🍹章末


🍸前言

        上次初步了解到 Elasticsearch 的基本使用,并且完成 ES 服务安装, ES 服务浏览器插件安装, ES 可视化客户端安装,以及 IK 分词器的安装,踩了很多坑,好在全部解决了。基于以上安装配置,来熟悉下 ES 的各种属性。本地安装的链接如下:

【Elasticsearch<一>✈️✈️】简单安装使用以及各种踩坑-CSDN博客

🍻一、Elasticsearch 基本属性

        1.1 ES VS MySQL

        在具体使用之前,先了解下和我们常用数据库有哪些相似之处,常用的属性对比如下

        1.2 ES 属性概念

        索引(index):

  • Elasticsearch中的索引类似于数据库,承担容器的角色。一个索引可以包含多个文档,并且每个文档都有自己的类型和字段。

    类型(type):
  • 在较旧的版本中,类型类似于表,它们定义了索引中文档的结构和字段。在较新的Elasticsearch版本中,通常只有一个默认类型 "_doc"。也就是说一个索引下面建议只有一个类型。

    文档(document):
  • 文档类似于数据库中的行。每个文档都是一个JSON对象,包含了一系列字段和对应的值。

    字段(field):
  • 字段类似于数据库表中的列。每个字段都有一个名称和对应的值,值可以是各种类型的数据,如文本、数字、日期等。
        1.3 ES 的增删改查

        注:在实操之前,确保之前安装的服务都启动了

        1.3.1 PUT 请求,用于创建或者更新索引,使用如下,创建了一个新的索引,到浏览器插件中也可看到具体的索引库以及库中数据的详细信息

        my_first_index 创建的索引名称

        _doc 7.x版本默认的_type

        1 指定文档的id

        {} json 数据格式的内容,类似于<k,v>,一个键对应一个值

PUT /my_first_index/_doc/1
{
  "name":"第一个索引库",
  "createtime":"2024.4.26"
}

     

        1.3.2 POST 请求, 类似于 PUT 请求,但是可以创建索引的时候不用指定文档 id,会生成一段字符作为默认文档 id,如下:通过插件也可以看到,随机生成的文档 id 是一个随机字符串

        注:创建或者修改的时候,索引或者类型命名不能包含大写字母,会报错

POST /my_first_index/_doc
{
  "name":"POST请求新增一条数据",
  "createtime":"2024.4.26.14:00",
  "title":"POST"
}

 

        1.3.3 GET 请求,获取索引库数据信息,如下:

        根据文档 id 查询某一条数据

GET /my_first_index/_doc/1

         查询某个索引库全部数据

GET /my_first_index/_search
{
  "query": {
    "match_all": {}
  }
}

 

 

        1.3.4 DELETE 请求 ,需要指定索引名称,如下:

🍺二、自动补全场景

        2.1 场景举例

        日常接触到的场景有很多,比如购物网站上输入”短袖“,可能会提示有”短袖 重磅“、”短袖 纯色“等等很多,其他很多网站上都可以遇到这种场景,比如经常逛的掘金社区,就以这个为模板,实操下,如下:

         2.2 使用数据分词器

        将这些数据录入的时候,指定索引库使用的分词器,本地使用的是 IK 分词器,前提是已经安装好并且没有报错

        2.2.1 创建索引库,指定分词器

        创建索引库的时候,指定该索引库的设置,这里指定的是第一种分词模式

IK 分词器有两种分词颗粒度

  • ik_max_word 对应着 IK 分词器的细粒度模式,它会尽可能地将文本切分成最小的词语单元。
  • ik_smart 对应着 IK 分词器的搜索引擎模式,它会根据文本的内容和上下文进行智能分词,提高搜索结果的相关性和效率。
PUT /juejin_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_ik_analyzer": {
          "tokenizer": "ik_max_word"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text",
        "analyzer": "my_ik_analyzer"
      }
    }
  }
}

        2.2.2 数据录入

         采用批量插入的方式,在最后两个数据中加入了两个扰乱字符串,如下:

POST /_bulk
{"index":{"_index":"juejin_index"}}
{"name":"可视化方案 前端"}
{"index":{"_index":"juejin_index"}}
{"name":"可视化编辑器"}
{"index":{"_index":"juejin_index"}}
{"name":"可视化拖拽软件"}
{"index":{"_index":"juejin_index"}}
{"name":"可视化表单设计"}
{"index":{"_index":"juejin_index"}}
{"name":"可视化大屏前端"}
{"index":{"_index":"juejin_index"}}
{"name":"可视化工作流引擎"}
{"index":{"_index":"juejin_index"}}
{"name":"可视化大屏屏幕适配"}
{"index":{"_index":"juejin_index"}}
{"name":"可视化数学软件"}
{"index":{"_index":"juejin_index"}}
{"name":"可视化大屏特效"}
{"index":{"_index":"juejin_index"}}
{"name":"123可视化"}
{"index":{"_index":"juejin_index"}}
{"name":"可以视为化学武器"}

        2.2.3 查询测试

        查询,”可视化“,相应的会有哪些提示,排名前三如下,排序是根据每个词条的匹配分数值从大到小排列,比如:

”123可视化“  有 14.6% 的把握

”可视化大屏“ 有 13.2% 的把握

”可视化编辑器“ 有 12.3% 的把握

GET /juejin_index/_search
{
  "query": {
    "match": {
      "name": "可视化"
    }
  }
}

 

  1. took: 查询执行的时间,以毫秒为单位。
  2. timed_out: 表示查询是否超时。
  3. _shards: 关于索引分片的信息,包括总分片数、成功分片数、跳过的分片数和失败的分片数。
    • total: 总分片数。
    • successful: 成功的分片数。
    • skipped: 被跳过的分片数。
    • failed: 失败的分片数。
  4. hits: 匹配的文档信息。
    • total: 匹配的文档总数。
      • value: 匹配的文档数。
      • relation: 与匹配文档数相关的关系,例如 "eq" 表示相等。
    • max_score: 匹配文档中最高的分数。
    • hits: 实际匹配的文档数组,每个文档包含以下信息:
      • _index: 文档所属的索引。
      • _type: 文档类型,在此处为 "_doc"。
      • _id: 文档的唯一标识符。
      • _score: 文档匹配得分,表示与查询条件的相关性。
      • _source: 包含文档原始内容的字段,以及其他自定义字段(如果有)。在这个例子中,"name" 是一个自定义字段,包含了文档的名称信息。
        2.3 查询的流程

        数据从录入到查询的过程都有哪些

        2.3.1 分词录入,这里使用的 IK 分词器,首先会对字符串拆分,如下:

        ”可视化大屏“ 这个字符串可以拆分为 这几个词条:{”可视化“,”可视“,”化“,”大“,”屏“},然后记录每个词条对应的文档 id,剩余的字符串也都是如此。

         2.3.2 用户输入词汇拆分,IK 分词器会将”可视化“拆分为如下:

          ”可视化“会拆分为如下词条:{”可视化“,”可视“,”化“},然后根据这些词条到词条列表中查询对应的文档id

        2.4 整个查询流程图

        从用户输入”可视化“开始,流程大概如下:

 🍹章末

        文章到这里就结束了~

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

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

相关文章

Zynq 7000 系列中的Interconnect(互联)简介

PS&#xff08;处理器子系统&#xff09;内部的互联结构包含了多个交换机&#xff0c;用于通过AXI点对点通道连接系统资源。这些通道负责在主机和从机客户端之间进行地址、数据和响应事务通信。该互联结构负责管理多个待处理的事务&#xff0c;并且为Arm CPU设计了低延迟路径&a…

UE4_动画基础_FootIK

角色由于胶囊体的阻挡&#xff0c;双脚与地面平行&#xff0c;不会与斜坡、台阶等贴合&#xff0c;有一条腿会处于悬空状态&#xff0c;通过双骨骼IK节点使一只脚太高&#xff0c;让后胶囊体下降&#xff0c;修正双脚的角度。这就是逆向运动IK的方法。 一、新建第三人称模板游戏…

OpenStack云计算(十四)——综合演练手动部署OpenStack,

本项目的项目实训可以完全参考教材配套讲解的详细步骤实施&#xff0c;总体来说实训工作量较大&#xff0c;可根据需要选做&#xff0c;重点观看配套的微课视频。 项目实训一 【实训题目】 搭建OpenStack云平台基础环境 【实训目的】 掌握OpenStack基础环境的安装和配置方…

CTFshow-PWN-栈溢出(pwn36)

存在后门函数&#xff0c;如何利用&#xff1f; 好好好&#xff0c;终于到了这种有后门函数的了 checksec 检查一下&#xff1a; 32 位程序&#xff0c;RELRO 保护部分开启 RWX: Has RWX segments 存在可读可写可执行的段 使用 ida32 看 main 函数 跟进 ctfshow 函数…

C++系列-命名空间

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 命名空间 在C/C中&#xff0c;变量&#xff0c;函数和后面要学到的类都是大量存在的&#xff0c;这些变量&#xff0c;函数和类的名称都存在于全局作用域中&#xff0c;可能会导…

电机入门1

文章目录 122.12.22.3 33.13.23.33.4 1 2 2.1 电机板 驱动板电机分类 驱动器分类 转速 转向扭矩定时器 ADC 2.2 PID 自动控制 的核心闭环控制算是 PID的应用 2.3 无刷电机用的 可大大提高其控制效率 和控制精度 3 开发板的IO 电流太小了 20~25ma 电机要A 驱动板 信号放大没舵…

Linux防火墙相关命令以及ip白名单配置

Linux防火墙相关命令以及ip白名单配置 firewall防火墙基础命令查看防火墙的服务状态查看防火墙的状态服务的开启、关闭和重启查看防火墙规则端口的查询、开放和关闭重启防火墙 防火墙白名单配置部分参数介绍 firewall防火墙基础命令 查看防火墙的服务状态 systemctl status f…

乘数而上,创邻科技入选2024数商典型应用场景“乘数榜”

4月18日&#xff0c;由浙江省科学技术协会指导的2024未来数商大会在杭州成功举办。本次大会以“场景突破 乘数而上”为主题&#xff0c;国际国内数商共聚未来科技城学术交流中心&#xff0c;聚焦数据要素市场的制度创新、数据治理、场景应用与生态构建等话题展开研讨。 大会现…

C++入门基础(一)

目录 C关键字命名空间命名冲突例子域的概念理解命名空间定义例子1例子2例子3例子4例子5例子6例子7 C输出与输入输出输入 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&#x1f412; 个人主页 &#x1f978;&#x1f978;&#x…

汽车底盘域的学习笔记

前言&#xff1a;底盘域分为传统车型底盘域和新能源车型底盘域&#xff08;新能源系统又可以分为纯电和混动车型&#xff0c;有时间可以再研究一下&#xff09; 1&#xff1a;传统车型底盘域 细分的话可以分为四个子系统 传动系统 行驶系统 转向系统 制动系统 1.1传动系…

计算机体系结构:向量体系结构介绍

向量体系结构介绍 什么是向量&#xff1f; 在计算机体系结构&#xff0c;"向量"&#xff08;vector&#xff09;是指一个由多个相同类型且逻辑上相关的数据元素组成的有序集合。这些元素可以是整数、浮点数、布尔值或其他数据类型&#xff0c;它们在内存中连续存储…

SpringSecurity + Oauth2 + jwt实现单点登录

文章目录 前言一、springsecurity oauth2 redis方式的缺点二、oauth2认证的4种模式的选择三、认证服务器的编写 第一步、创建WebSecurity配置类第二步、创建jwt仓库配置类第三步、创建UserDetailsService类第四步、创建认证服务器配置类 四、测试认证服务器的功能 1.创建Login…

墨水屏技术在工业智能化领域的创新应用

墨水屏技术在工业智能化领域的创新应用 随着科技的快速发展&#xff0c;各种显示技术层出不穷&#xff0c;其中墨水屏作为一种独特的显示技术&#xff0c;逐渐在工业领域展现出其独特的优势和价值。墨水屏以其低功耗、高对比度和阅读舒适度高等特点&#xff0c;正成为工业应用…

uniapp-css多颜色渐变:左右+上下

案例展示 案例代码&#xff1a; 代码灵感&#xff1a;使用伪类进行处理 <view class"headBox"></view>.headBox {height: 200rpx;background: linear-gradient(to right, #D3D5F0, #F0DCF3, #F7F6FB, #DAE8F2, #E1D3EE);position: relative; }.headBox…

【C++】哈希思想

目录 哈希介绍&#xff1a; 一&#xff0c;位图 1-1&#xff0c;位图的认识 1-2&#xff0c;位图的简单实现 1-3&#xff0c;位图的应用 二&#xff0c;布隆过滤器 2-1&#xff0c;布隆过滤器的认识 2-2&#xff0c;布隆过滤器的简单实现 2-3&#xff0c;布隆过滤器的…

3d设计网站有哪些(1)?渲染100邀请码1a12

做3d设计需要各类资源&#xff0c;比如模型、材质、贴图等&#xff0c;如果这些都要自己做会非常麻烦&#xff0c;所幸现在有网站可以下载&#xff0c;有的免费有的收费&#xff0c;这篇文章我就先分享几个给有需要的朋友看看吧。 1、Pikbest Pikbest成立于2018年7月12日&…

万辰集团如何破局“增收不增利”的困境?

在波澜不惊的食用菌加工行业&#xff0c;万辰集团&#xff08;300972.SZ&#xff09;曾是一名平凡的参与者。2021年战略转型的号角吹响&#xff0c;万辰集团挥别了传统业务&#xff0c;转而投身于快速增长的量贩零食市场&#xff0c;并迅速扩张到成为这一领域的重要玩家。万辰的…

TDSQL手动调整备份节点或冷备节点

一、背景描述 近期TDSQL数据库备份不稳定&#xff0c;有些set实例的备份任务未自动发起。经排查分析&#xff0c;存在多个set实例容量已经超过TB级别&#xff0c;且冷备节点都是同一台。因此&#xff0c;需要手动将当前备份节点改到其他备节点&#xff0c;开启增量备份&#x…

C语言笔试题之重排链表

重排链表 实例要求 1、给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln - 1 → Ln2、请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …3、不能只是单纯的改变节点内部的值&#xff0c;而是…

高级STM32应用开发:使用HAL库和RTOS

引言 STM32系列微控制器以其高性能、丰富的外设支持和低功耗特性&#xff0c;在工业、汽车及消费电子市场中占有显著地位。 下面我们旨在探讨STM32的高级开发技术&#xff0c;包括硬件抽象层&#xff08;HAL&#xff09;库的使用和实时操作系统&#xff08;RTOS&#xff09;的…