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

全文检索ElasticSearch到底是什么?

学习ElasticSearch之前,我们先来了解一下搜索

1 搜索是什么

① 概念:用户输入想要的关键词,返回含有该关键词的所有信息。

② 场景:

​ 1互联网搜索:谷歌、百度、各种新闻首页;

​ 2 站内搜索(垂直搜索):企业OA查询订单、人员、部门,电商网站内部搜索商品(淘宝、京东)场景。

2 数据库做搜索

当数据量小,简单搜索,可以使用数据库。

但是电商项目中,商品上亿条时,查询“笔记本电脑”等关键词时,上亿条数据的商品名字段逐行扫描,性能跟不上。而且不能分词,如搜索“笔记本电脑”,只能搜索完全和关键词一样的数据,那么数据量小时,搜索“笔记本电脑”,“电脑”数据要不要给用户。

在当今互联网时代,搜索肯定不会使用数据库搜索。数据量太大,轻松达到PB级。

3 全文检索

全文检索,我们要用到倒排索引

倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。

Lucene实现了倒排索引的理念,所谓Lucene就是一个jar包,里面封装了全文检索的引擎、搜索的算法代码。开发时,引入lucene的jar包,通过api开发搜索相关业务。底层会在磁盘建立索引库。

4 倒排索引

文章编号文章内容
1{ElasticSearch简称为ES,是一个全文搜索引擎}
2{全文搜索引擎,比较火的有ElasticSearch还有Solr}
3{最近微服务火爆,究竟什么是微服务呢}
4{常见的微服务组件:Nacos、Seata、Dubbo}
5{关于关系型数据库和非关系型数据库的讲解}

倒排索引

作为查询条件的,我们称为关键字

索引index关键字出现的位置
1ElasticSearch1,2
2全文搜索引擎1,2
3搜索引擎1,2
4引擎1,2
5Solr2
6微服务3,4
7Nacos4
8Seata4
9Dubbo4

5 数据库中索引的基本概念

所谓的索引其实就是数据目录

通常情况下,索引是为了提高查询效率

数据库索引分两大类:聚集索引、非聚集索引

聚集索引就是数据库保存数据的物理顺序,默认情况下就是主键id,所以按id查询数据库中的数据效率非常高

如果想在非主键的列添加索引,就是非聚集索引

使用索引需要注意的问题:
1.创建的索引会占用硬盘空间
2.创建索引之后,对该表进行增删改的操作时,会引起索引的更新,所以效率会降低
3.对数据库进行批量新增时,先删除索引,增加数据完毕之后再创建
4.不要对数据库样本少的列添加索引
5.当我们执行查询时,where条件后面应该先查询有索引的列
6.我们要明确查询条件,索引才会生效

数据库中有索引可以提高查询效率,但是模糊查询,会使用索引失效

模糊查询语句通常写成这样

SELECT title 
FROM item 
WHERE title LIKE "%手机%";

我们使用索引的前提是条件要明确,但是模糊查询使用的是前条件模糊查询,会使用索引失效

有人经过测试一张千万级别的数据库在数据库进行模糊查询时需要20秒以上的时间

当前互联网项目要求"三高"的需要下,效率太低了,不符市场需求

需要对查询进行优化,在课程项目中使用的ElasticSearch,优化后从同样的数据量的ES中查询相同的数据,效率能够提高100倍以上

ElasticSearch主要是为了解决数据库模糊查询性能低下的问题

上一篇文章:Quartz的使用-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Z0412_J0103/article/details/143355565下一篇文章: Elasticsearch的功能及概念-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Z0412_J0103/article/details/143556512

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

相关文章:

  • FPGA实现串口升级及MultiBoot(五)通过约束脚本添加IPROG实例
  • 文献阅读 | Nature Methods:使用 STAMP 对空间转录组进行可解释的空间感知降维
  • 【模块化大作战】Webpack如何搞定CommonJS与ES6混战(1-3)
  • [NewStar 2024] week5完结
  • IntelliJ IDEA的快捷键
  • 暮雨直播 1.3.2 | 内置直播源,频道丰富,永久免费
  • 单相锁相环,原理与Matlab实现
  • PICO+Unity 用手柄点击UI界面
  • Rust移动开发:Rust在iOS端集成使用介绍
  • 虚拟现实技术在旅游行业的应用
  • 《Java核心技术 卷I》Swing使用颜色
  • 神书《从零构建大模型》分享,尚未发布,GitHub标星22k!!
  • 【JavaEE进阶】Spring AOP 原理
  • 【网络安全】2.3 安全的网络设计_2.防御深度原则
  • 测绘程序设计|C#字符串及其操作|分割|取子串|格式化数值|StringBuilder类
  • 自然语言处理——Hugging Face 详解
  • 本地保存mysql凭据实现免密登录mysql
  • Ubuntu 22 安装 Apache Doris 3.0.3 笔记
  • 构建智能防线 灵途科技光电感知助力轨交全向安全防护
  • 【go从零单排】泛型(Generics)、链表
  • IoTDB 与 HBase 对比详解:架构、功能与性能
  • 推荐一款ETCD桌面客户端——Etcd Workbench
  • 01 Oracle 数据库存储结构深度解析:从数据文件到性能优化的全链路探究
  • AI教育革命:个性化学习的新篇章
  • 【网络原理】万字详解 UDP 和 TCP
  • 从零开始搭建Halo个人博客
  • AMD显卡低负载看视频掉驱动(chrome edge浏览器) 高负载玩游戏却稳定 解决方法——关闭MPO
  • 数据结构——二叉树(续集)
  • ElasticSearch学习篇16_《检索技术核心20讲》进阶篇之空间检索
  • uni-app跨域set-cookie