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

elasticsearch 倒排索引原理详解

什么是es

elasticsearch 是面向文档型的nosql数据库,一条数据就是一个文档;因为es的出现就是为了搜索而生的,所以es的核心就是索引,甚至说es中 “一切皆索引” 都不为过;最核心的概念就是“倒排索引”;

什么是倒排索引

有倒排就肯定有正排;所以在了解倒排索引之前,先来了解一下什么是正排索引,通过这2种索引的比较会更容易理解es的核心概念;

正排索引(正向索引)

相信大家都学过关系型数据库,像mysql、oracle、sqlserver等等;这些关系型数据库在查询数据时都是使用正排索引的,比如下面表数据中,如果我们要查询某一条记录,只需要通过主键id来关联到整行数据即可,这种通过主键id来关联整行数据的方式就叫做正排索引

但是,现在有一个需求,我要找friends中有李四的记录,就得用模糊查询来实现,而众所周知,模糊查询的效率是非常低下的,因为模糊查询涉及到全表扫描,如果你的表数据中有上千万的数据,这种查询方式无疑会消耗大量的时间;

倒排索引

而反向索引则是将关键字作为索引去查询,在底层会将一段内容拆开,分成一个个关键字,每个关键子对应了哪个主键id,有了这层关联之后,查询的速度自然快了许多;

分词

把一段文字拆开分成不同的词语,这是怎么做到的呢?这就要说到es一个很重要的功能那就是分词器,但是es默认只支持英文分词,不支持中文,若要使用中文分词,需要自行安装IK分词插件;

es和关系型数据库存储数据的概念对比

es的存储结构其实和关系型数据库差不多,只是有一些名词会有差异化,他们的区别如下

关系型数据库Elasticsearch
数据库(database)索引(indices)
表(tables)(类型)types
行(rows)documents(文档)
字段(columns)fields(属性)
去掉Types

这里的Types已经被逐渐弱化,在es6中,一个index下只能包含一个type,而在es7中,types的概念已经被删除,如果我们在一个index下创建2个types的话会报错;

es7以后,以下2个查询的结果是一样的,去掉了types一样可以查询

GET /like/_doc/_search
GET /like/_search
http://www.lryc.cn/news/601632.html

相关文章:

  • 湖南(源点咨询)市场调研 如何在行业研究中快速有效介入 起头篇
  • 一场关于电商零售增长破局的深圳探索
  • Python类(class)参数self的理解
  • ROS2总结(二)
  • VMware Workstation Pro虚拟机的下载和安装图文保姆级教程(附下载链接)
  • Mysql 二进制安装常见问题
  • QUARTUS速通流程
  • HCIP---MGRE实验
  • 数学建模——模糊综合评价
  • 2-4、Dify案例实践—基于工作流构建商城用户评价智能分析系统
  • 算法竞赛阶段二-数据结构(37)数据结构循环链表模拟实现
  • print(“\033[31m红\033[32m绿\033[34m蓝\033[0m默认色“)
  • 零基础学习性能测试第五章:JVM性能分析与调优-JVM运行时内存区域介绍
  • Maven之多模块项目管理
  • C语言——关于指针(逐渐清晰版)
  • 嵌入式——单片机的独立按键
  • 数据结构基础内容(第七篇:堆、哈夫曼树)
  • 电子电气架构 --- 软件bug的管理模式
  • 「iOS」————MRC
  • Flink2.0学习笔记:Stream API 常用转换算子
  • 第十八章:AI的“通感”:揭秘图、文、音的共同语言——CLIP模型
  • 常见认证机制详解
  • Unity FXAA
  • 设计模式(六)创建型:单例模式详解
  • 五、搭建springCloudAlibaba2021.1版本分布式微服务-gateway网关
  • 新手开发 App,容易陷入哪些误区?
  • c++加载qml文件
  • 【学习笔记】DexMimicGen:通过模仿学习实现双臂灵巧操作的自动化数据生成
  • 小白成长之路-Ansible自动化(一)
  • 小白投资理财 - 从换手率和成交量分析股票趋势