全文检索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

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

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

相关文章

【C++】vector模拟实现、迭代器失效问题(超详解)

vector会使用之后我们来模拟实现一下,通过对vector的模拟实现,我们来说一下迭代器失效问题。 1.准备工作 在头文件vector.h里声明和实现函数,然后在test.cpp里测试代码的正确性。 在vector.h中用命名空间分隔一下,因为c库里面也有…

前端CSS3 渐变详解

文章目录 CSS3 渐变详解一、引言二、CSS3 渐变基础1、线性渐变1.1、基本线性渐变1.2、改变渐变方向 2、径向渐变2.1、基本径向渐变2.2、设置径向渐变的中心 三、高级渐变技巧1、重复渐变1.1、重复线性渐变1.2、重复径向渐变 四、总结 CSS3 渐变详解 一、引言 在现代网页设计中…

Docker学习—Docker的安装与使用

Docker安装 1.卸载旧版 首先如果系统中已经存在旧的Docker,则先卸载: yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine2.配置Docker的yum库 首先…

M1M2 MAC安装windows11 虚拟机的全过程

M1/M2 MAC安装windows11 虚拟机的全过程 这两天折腾了一下windows11 arm架构的虚拟机,将途中遇到的坑总结一下。 1、虚拟机软件:vmware fusion 13.6 或者 parallel 19 ? 结论是:用parellel 19。 这两个软件都安装过&#xff0…

蓝桥杯备考——算法

一、排序 冒泡排序、选择排序、插入排序、 快速排序、归并排序、桶排序 二、枚举 三、二分查找与二分答案 四、搜索(DFS) DFS(DFS基础、回溯、剪枝、记忆化) 1.DFS算法(深度优先搜索算法) 深度优先搜…

‘conda‘ 不是内部或外部命令,也不是可运行的程序或批处理文件,Miniconda

下载了conda,但是在cmd里执行conda --version会显示’conda’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 原因是环境变量里没有添加conda,无法识别路径。 需要在系统环境变量里添加如下路径: 保存之后重新打开cmd&am…

UE5 随机生成地牢关卡

参考视频:【UE5 | 教程 | 地编】虚幻引擎5 中创建史诗级 程序化 地下城_哔哩哔哩_bilibili 首先创建一个父项Actor 这个BOX碰撞提是和地板重叠的 这三个是场景组件,这个ExitsFolder下面的箭头等会会在子蓝图中添加 接下来创建BP_MasterRoom的子蓝图&…

Qt信号和槽-->day04

Qt信号和槽 标准的信号和槽函数Qt中的槽函数Qt中的信号 connect案例 自定义信号和槽案例分析 信号槽的拓展信号连接信号案例 信号槽的两种连接方式Qt5中的处理方式Qt4中的处理方式Qt5处理信号槽重载问题案例 lambda表达式简单案例Qt中的应用 补充知识点 标准的信号和槽函数 QW…

十大经典排序算法-冒泡算法详解介绍

1、十大经典排序算法 排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要…

ASMR助眠声音视频素材去哪找 吃播助眠素材网站分享

在快节奏的现代生活中,越来越多的人感到压力山大,许多人开始寻求助眠和放松的方式。而ASMR(自发性知觉经络反应)助眠声音视频,凭借其独特的声音刺激和放松效果,成为了睡前的“神器”。如果你是一位内容创作…

【Linux】常用命令(2.6万字汇总)

文章目录 Linux常用命令汇总1. 基础知识1.1. Linux系统命令行的含义1.2. 命令的组成 2. 基础知识2.1. 关闭系统2.2. 关闭重启2.3. 帮助命令(help)2.4. 命令说明书(man)2.5. 切换用户(su)2.6.历史指令 3.目录…

量化分析工具日常操作日记-5-通合科技

使用量化分析微信小程序工具“梦想兔企业智能风险分析助手”日常操作日记-5-军工-通合科技(300491)。 周末国家新政策,要大力支持军工行业,我用工具挖掘了两个低位股,供大家参考。通合科技(300491&#xff…

4D施工奇迹:废弃码头变身地标体育场

SYNCHRO 促进协同和战略性施工,完成大型项目交付 改造举世闻名的海滨城市 为了提升球迷的比赛日体验,英国足球俱乐部埃弗顿足球俱乐部正在利物浦默西河畔废弃的布拉姆利摩尔码头建造一座新的现代化体育场。该体育场是利物浦城市总体规划的一部分&#xf…

图神经网络(GNN)入门笔记(1)——图信号处理与图傅里叶变换

一、信号处理:时域与频域 时域(Time Domain)是我们生活中常见的信号表示方式,以横轴为时间,纵轴为信号该时刻的强度(幅度),就可以得到一张时域图。打个比方,通过每时每刻…

【八百客CRM-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

【AIGC】如何在ChatGPT中制作个性化GPTs应用详解

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | GPTs应用实例 文章目录 💯前言💯什么是GPTsGPTs的工作原理GPTs的优势GPTs的应用前景总结 💯创建GPTS应用的基本流程进入GPTs创建界面方式一:按照引导完成生成创建GPTs方式二…

读书笔记--Java与线程

并发不一定要依赖多线程(如PHP中很常见的多线程并发),但是Java里面谈论并发,大多数都与线程脱不了关系。 线程的实现 我们都知道,线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程…

PICO+Unity 用手柄点击UI界面

如果UI要跟随头显,可将Canvas放置到XR Origin->Camera Offset->Main Camera下 1.Canvas添加TrackedDeviceGraphicRaycaster组件 2.EventSystem移动默认的Standard Input Module,添加XRUIInputModule组件 3.(可选)设置射线可…

三十六、Python基础语法(JSON操作)

JSON(JavaScript Object Notation)是一种基于文本,轻量级的数据交换格式。它易于人阅读和编写,同时也易于机器解析和生成,在自动化测试中经常用来存放测试数据。 JSON的特点: 基于文本,不包含图…

产品设计理念:10个案例分享

在互联网时代,企业通过在线产品为用户提供服务。要在众多竞争产品中脱颖而出并吸引更多用户,企业不仅要提供优质的服务,还要在产品设计上给用户带来卓越的体验。互联网产品设计包括页面布局、服务内容、流程逻辑、色彩搭配、图标、按钮等多个…