ElasticSearch学习笔记(一)-搜索引擎介绍及ElasticSearch安装(上)

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: ElasticSearch学习笔记(一)-搜索引擎介绍及ElasticSearch安装

1.搜索引擎


1.1-什么是搜索引擎


我们先通过通过官方的解释来理解一下什么是搜索引擎.当然了我们之后会通过更加通俗的方式来详细讲解搜索引擎的概念.


维基百科对于搜索引擎的介绍:


搜索引擎(英语:search engine)是一种信息检索系统,旨在协助搜索存储在计算机系统中的信息。搜索结果一般被称为“hits”,通常会以表单的形式列出。网络搜索引擎是最常见、公开的一种搜索引擎,其功能为 搜索万维网上储存的信息。


其实维基百科的解释比较到位的,说白了搜索引擎就是一个帮助我们 快速检索信息 的工具.


但是大家又要说了,概念是知道了但是我好想没怎么用过搜索引擎啊.


相信我,其实大家 每天都在接触搜索引擎 ,这里我们可以举一个非常简单的栗子.


如果我们使用的是谷歌浏览器的话,那么我们在设置里面就能看到这么一个选项就是更换我们的搜索引擎.


20201207090624646.png


大家看到选项之后就能知道搜索引擎具体有哪些了.这里谷歌为我们提供了好几个选项,像我们常用得 百度,360 这些都是属于搜索引擎.当然了像 阿里的夸克,搜狗,UC 等等都是搜索引擎.


20201207093732217.png


1.2-搜索引擎为什么这么快?


既然说到搜索引擎的搜索,那么我们相应的,我们就会想到数据库里面的搜索,那么我们就会问同样是搜索为什么最后选择通过搜索引擎来实现搜索而不是通过数据库来实现搜索呢?


20201207095745468.jpg


其实我们通过上面的概念能够总结出搜索引擎的一个最最最最最最大的特点就是搜索的速度非常的快 ,大家都知道数据库在 百万级别的数据量 的时候就会明显表现出 搜索能力的下降 ,必须通过 优化SQL的方式才能提高运行的速度 ,但是搜索引擎因为在 底层的搜索算法 上面就和数据库的搜索不同,这就使得搜索引擎本质上搜索的速度就呈现 飞一般感觉


既然这样我们肯定就会想,卧槽快快快,到底他们俩的算法有什么区别呢? Come on! Just Teach Me!


2020120710081680.jpg


既然我们想要知道搜索引擎为什么这么快的话,我们就必须要将他与数据库 横向对比,这样才能够体现出他为什么强大.


1.2.1-正排索引


我们先来讲解一下数据库底层的搜索算法-正排索引:


再讲解正排索引之前,我们需要先明白数据库关于搜索的一些流程,在数据库中相信大家都十分清楚主键这个概念吧,接下来我们需要明确下面主键的这几个概念以及搜索内容的概念,需要先明白这几个概念,后续才能更好的理解:


主键一般定义成数值类型即int,一般不会通过字符来进行定义,排除身份证,电话号码等等这些行业里面特定的主键,一般是会通过int来定义主键的.

主键一般都是在后台显示的,一般不会在前台的页面里面显示,就算在前台显示,也是显示前端写好的序号即递升的主键:1,2,3,4.......n,这就是使得使用前台使用搜索功能的用户 一般是不会直接搜索主键的,毕竟他们根本就不知道主键是啥,在哪里看.

用户使用搜索功能的时候一般都是 通过字符串来进行搜索 ,这就使得搜索一般不会直接匹配主键----正如我们第一点强调的,主键一般都时定义成int类型

用户也一般不会直接通过主键来进行搜索----正如我们第二点说的,主键一般都是在后台显示的,一般不会显示在前台的页面里面,用户一般根本就不知道主键是什么,因为根本就看不到

明白了上述四点内容之后我们再来讲解正排索引,正排索引的概念其实很简单他就是按照我们的主键顺序查找,根据主键找到该对象之后,在依次将该对象的属性与用户输入的内容进行匹配,如果匹配到就停止,如果没有的话就继续重复上面的查找过程.


接下来查我们通过一个简单的栗子来不夯筑我们理解一下:

假设我们到一个教室里面找小明同学,但是呢我们只知道这些学生的学号,那么显然我们的查找过程应该是这样的:


20201207113219911.png


显然这样的效率是不行的,首先先要按照主键顺序查找相应的对象,其次就是需要校验对象的每个对象是否与我们搜索的内容匹配,如果对象的属性多的离奇,那么这个过程会更加的消耗时间.


1.2.1-倒排索引


接下来我们再讲解一下搜索引擎的搜索算法-倒排索引:


倒排索引则采取了另外一种方式来存储数据,他在与数据库中的数据绑定之后他会将数据库中的数据进行重构,先将对象的各项属性进行分词处理,处理完成之后将相应的属性与他们的主键进行绑定但是这个绑定过程不再是主键----属性的格式,而是更换成属性分词----主键的形式,这样进行搜索匹配的过程中就可以直接匹配属性,之后再将最后查询出来的主键进行匹配即可.可能这样说大家不是很能理解,我们还是通过下面的栗子来帮助大家理解:


2020120711310545.png


显然这样是能够极大的降低查询的时间的,因为我们 可以直接将主键对象与我们的内容进行匹配 了,不用先找到对象之后再比对对象的属性这么麻烦了.


如果还是不是能够理解的话,我们再通过下面的栗子加深理解:

假设我们数据库中的 数据是这样的:


20201207114144560.png


假设我们查询 功夫熊猫 这个内容,那么显然我们数据库搜索的过程就是这样的


2020120714434748.png


我们再来看我们搜索引擎的搜索过程:


首先我们会将数据重构成这样


20201207114233788.png


将数据重构成这样之后,我们再来看看搜索引擎的搜索过程:


20201207145033969.png


每获得一个分词之后就只检查是不是剩下的分词中的一个,并且 记录主键是采取数据交集的策略,这样就使得搜索的速度大大加快.


接下来的是我自己的想法,可能说的不对,大家就当看着玩玩!!

如果用两个数据结构分别来表示正排索引以及倒排索引的话,可以是下面这样:


链表----正排索引


每次都必须按序查找,就像链表一样,必须从头开始查找,并且也像链表的比对过程一样.


Map----倒排索引


也是需要 按序查找,但是查找的过程变得简便很多,匹配之后就可以像Map一样直接取出相应的主键值,类似于Map的get()方法,直接获取key的value值


1.3-主流的搜索引擎技术有哪些


了解完什么是搜索引擎之后,我们再来看看目前主流的搜索引擎运用的 技术 有哪些?


目前主流的搜索引擎技术主要有两大家:


Solr


ElasticSearch


接下来我们简单介绍一下这两者:


其实Solr与ElasticSearch两者的底层都是通过Apache的Lucene来实现的,只是Solr先被开发出来而已,ElasticSearch后开发出来而已.两者的基本功能其实相差不大,只是一些特定的方位内存在差异


Solr:

优点:


支持多种数据格式:json,xml,html等等等

更加的成熟,稳定(毕竟是最先开发出来的,姜还是老的辣)

非实时搜索的 情况下搜索的速度更快

缺点:


建立索引实现实时搜索 的情况下搜索速度明显降低

ElasticSearch:

优点:


支持实时搜索,搜索速度不会降低

支持分布式

缺点:


自动化程度还不够高

介绍完上面的所有内容之后,就需要学习使用了,这里我选择的是ElasticSearch,因为他对新手更加的友好,配置相对简单,所以我选择了ElasticSearch.


接下来就是ElasticSearch的安装了.


相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
5月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
2529 0
|
6月前
|
安全 Java Linux
Linux安装Elasticsearch详细教程
Linux安装Elasticsearch详细教程
1017 1
|
6月前
|
人工智能 自然语言处理 运维
让搜索引擎“更懂你”:AI × Elasticsearch MCP Server 开源实战
本文介绍基于Model Context Protocol (MCP)标准的Elasticsearch MCP Server,它为AI助手(如Claude、Cursor等)提供与Elasticsearch数据源交互的能力。文章涵盖MCP概念、Elasticsearch MCP Server的功能特性及实际应用场景,例如数据探索、开发辅助。通过自然语言处理,用户无需掌握复杂查询语法即可操作Elasticsearch,显著降低使用门槛并提升效率。项目开源地址:<https://github.com/awesimon/elasticsearch-mcp>,欢迎体验与反馈。
1651 1
|
11月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
424 5
|
自然语言处理 搜索推荐 数据库
高性能分布式搜索引擎Elasticsearch详解
高性能分布式搜索引擎Elasticsearch详解
324 4
高性能分布式搜索引擎Elasticsearch详解
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
自然语言处理 搜索推荐 关系型数据库
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
这篇文章是关于Elasticsearch全文搜索引擎的学习指南,涵盖了基本概念、命令风格、索引操作、分词器使用,以及数据的增加、修改、删除和查询等操作。
256 0
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
1137 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
开发框架 监控 搜索推荐
GoFly快速开发框架集成ZincSearch全文搜索引擎 - Elasticsearch轻量级替代为ZincSearch全文搜索引擎
本文介绍了在项目开发中使用ZincSearch作为全文搜索引擎的优势,包括其轻量级、易于安装和使用、资源占用低等特点,以及如何在GoFly快速开发框架中集成和使用ZincSearch,提供了详细的开发文档和实例代码,帮助开发者高效地实现搜索功能。
658 0
|
自然语言处理 搜索推荐 Java
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(一)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图
260 0