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

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.xdnf.cn/news/16368.html

相关文章:

  • LeetCode 923.多重三数之和
  • 面试150 数字范围按位与
  • 第六章 JavaScript 互操(3)JS调用.NET
  • Ubuntu服务器安装与运维手册——操作纯享版
  • 算法竞赛阶段二-数据结构(37)数据结构动态链表list
  • CLAP文本-音频基础模型: LEARNING AUDIO CONCEPTS FROM NATURAL LANGUAGE SUPERVISION
  • 机器学习的算法有哪些?
  • Jmeter的元件使用介绍:(八)断言器详解
  • Android网络框架封装 ---> Retrofit + OkHttp + 协程 + LiveData + 断点续传 + 多线程下载 + 进度框交互
  • 【C++】论如何封装红黑树模拟实现set和map
  • haproxy七层代理(知识点+相关实验部署)
  • 面试150 只出现一次的数字Ⅱ
  • [AI8051U入门第十一步]W5500-服务端
  • 点击劫持:潜藏在指尖的安全陷阱
  • 腾讯云AI代码助手CodeBuddy开发指导
  • bash的特性-命令和文件自动补全
  • 深度学习中的计算图与自动微分原理:静态图与动态图的实现差异
  • 【Oracle】Oracle分区表“排雷“指南:当ORA-14400错误找上门时如何优雅应对
  • 关于GateWay网关
  • 显式等待和隐式等待的区别
  • 【星野AI】minimax非活动时间充值优惠漏洞
  • 基于springboot的图书借阅系统
  • 《计算机组成原理与汇编语言程序设计》实验报告二 基本数字逻辑及汉字显示
  • 方案C,version2
  • 《C++ list 完全指南:从基础到高效使用》
  • Tactile-VLA:解锁视觉-语言-动作模型的物理知识,实现触觉泛化
  • 【AcWing 830题解】单调栈
  • 是德科技 | AI上车后,这条“高速公路”如何畅通?
  • HarmonyOS应用上架流程详解
  • 【音视频协议篇】WebRTC 快速入门