面试题:ElasticSearch是什么?应用场景是什么?

news2024/11/20 8:47:04

文章目录

  • 1、什么是搜索
  • 2、如果用数据库做搜索会怎么样
  • 3、什么是全文检索、倒排索引和Lucene
  • 4、ElasticSearch是什么
  • ElasticSearch的功能
  • ElasticSearch的应用场景
  • ElasticSearch的特点


ElasticSearch是一个分布式,高性能、高可用、可伸缩的搜索和分析系统

看了上面这段话,估计很多人都懵了,这个是啥。我们先从搜索说起,先介绍下面几点

1、什么是搜索

百度、Google:我们想寻找一个我们喜欢的电影或者书籍就会去百度或者Google搜索一下。

互联网搜索:电商搜索商品,招聘网站搜索简历或者岗位

IT系统的搜索:员工管理搜索,会议管理搜索

2、如果用数据库做搜索会怎么样

在软件开发里面,数据都是存储在数据库里面的,比如电商网站的商品信息,员工的信息等等,如果从员工角度去做搜索功能,我们会这么设计

在这里插入图片描述
以上会存在几个问题:

  1. 如果表记录上千万上亿了这个性能问题,另外一个如果有一个本文字段要在里面模糊配置,这个就会出现严重的性能问题

  2. 还不能将搜索词拆分开来,比如上面这个只能搜索名字是“张三”开头的员工,如果想搜出“张小三”那是搜索不出来的。

总体来说,用数据库来实现搜索,是不太靠谱的,通常性能也会很差

3、什么是全文检索、倒排索引和Lucene

举个简单的例子:比如最近上映的热剧(碟中谍6:全面瓦解),我们想搜索一下全面瓦解这个电视剧,可是在输入的过程,不小心输入了”全瓦解”,我们看看百度这个返回了什么,百度返回的结果确实是我想要找到的内容,现在我们介绍一下全文检索和倒排索引是什么

在这里插入图片描述
我们看看下面这个图,假如我们有很多数据”全面瓦解电影,全面瓦解海报,全面瓦解评论,全面瓦解文章”等等信息,从数据到构建倒排索引的过程我们图中标记为“1”,通俗一点讲就是,倒排索引就是讲数据中的词拆分构建一个大表,将关键字拆出来,后面带上这个文章的documentid号,例如中间这个就是倒排索引了。

全文检索就比较好理解的,就是当我们输入“全瓦解”,会被拆分成”全”,“瓦解”2个此,用2个词去倒排索引里面去检索数据,检索到的数据返回。整个过程就叫做全文检索

在这里插入图片描述
如果这个用数据库的思维来做的话,假如一共100W的记录,按照之前的思路就是扫描100W次,而且每次扫描,都需要匹配那个文本所有的字符,确认是否包含搜索的关键词,而且还不能将搜索词拆解来进行检索

如果是利用倒排索引的话,假设还是100W,拆分出来的词语,假设有1000W个词语,那么在倒排索引中,就有1000W行。我们可能不需要检索1000W词,有可能检索1次,就能找到我们需要的数据,也有可能是100W次,也有可能是1000W次

lucene:就是一个jar包,里面包含了封装好的各种建立倒排索引,以及进行搜索的代码,包括各种算法。我们就用java开发的时候

4、ElasticSearch是什么

Lucene是单机的模式,如果你的数据量超过了一台物理机的容量,你需要扩容,将数据拆分成2份放在不同的集群,这个就是典型的分布式计算了。需要拷贝容错,机器宕机,数据一致性等复杂的场景,这个实现就比较复杂了。

ES解决了这些问题

自动维护数据的分布到多个节点的索引的建立,还有搜索请求分布到多个节点的执行

自动维护数据的冗余副本,保证了一旦机器宕机,不会丢失数据

封装了更多高级的功能,例如聚合分析的功能,基于地理位置的搜索

在这里插入图片描述

ElasticSearch的功能

  1. 分布式的搜索引擎和数据分析引擎
  • 搜索:网站的站内搜索,IT系统的检索
  • 数据分析:电商网站,统计销售排名前10的商家
  1. 全文检索,结构化检索,数据分析
  • 全文检索:我想搜索商品名称包含某个关键字的商品
  • 结构化检索:我想搜索商品分类为日化用品的商品都有哪些
  • 数据分析:我们分析每一个商品分类下有多少个商品
  1. 对海量数据进行近实时的处理
  • 分布式:ES自动可以将海量数据分散到多台服务器上去存储和检索
  • 海联数据的处理:分布式以后,就可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的处理了
  • 近实时:检索数据要花费1小时(这就不要近实时,离线批处理,batch-processing);在秒级别对数据进行搜索和分析

ElasticSearch的应用场景

  • 维基百科
  • The Guardian(国外新闻网站)
  • Stack Overflow(国外的程序异常讨论论坛)
  • GitHub(开源代码管理)
  • 电商网站
  • 日志数据分析
  • 商品价格监控网站
  • BI系统
  • 站内搜索

ElasticSearch的特点

  • 可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司;也可以运行在单机上,服务小公司
  • Elasticsearch不是什么新技术,主要是将全文检索、数据分析以及分布式技术,合并在了一起
  • 对用户而言,是开箱即用的,非常简单,作为中小型的应用,直接3分钟部署一下ES
  • Elasticsearch作为传统数据库的一个补充,比如全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

泛型编程<T extends Comparable<? super T>>是什么意思

今天看到了两个这样的写法,非常好奇。 <T extends Comparable<? super T>>public class BplusTree<K extends Comparable </K/>,V>下面是不同人对这种写法的解释 大概理解的意思是实现不同类之间属性的对比 转载链接 这段代码是什么意思呢 public…

小米系列机型--MIUI14关闭广告 推送广告 开屏广告 通用其他miui版本

在现代社会中&#xff0c;手机广告已经成为我们日常生活中的一种困扰。每当我们使用手机时&#xff0c;不断弹出的广告不仅打扰了我们的正常操作&#xff0c;还消耗了我们的流量和电池电量&#xff0c;以小米机型为例.根据下方的设置完以后基本手机就相对来说很干净。 以前博文…

2000-2019年高新技术企业统计情况

2000-2019年高新技术企业统计情况 1、时间&#xff1a;2000-2019年 2、指标&#xff1a;统计年度、所属省份、所属省份代码、所属城市、所属城市代码、认定对象身份、认定总次数、涉及公司总数量 3、来源&#xff1a;csmar 4、指标说明&#xff1a; SgnYear [统计年度] - …

高效查询大量快递信息,轻松掌握技巧

在如今快节奏的生活中&#xff0c;快递已经成为我们日常不可或缺的一部分。然而&#xff0c;对于一些忙碌的人来说&#xff0c;单个查询每一个快递单号可能会浪费太多时间。因此&#xff0c;我们需要一款可以帮助我们批量查询快递的软件。 在市场上&#xff0c;有很多款专门用于…

vue+express、gitee pm2部署轻量服务器(20230923)

一、代码配置 前后端接口都保持 127.0.0.1:3000 vue 项目 创建文件 pm2.config.cjs module.exports {apps: [{name: xin-web, // 应用程序的名称script: npm, // 启动脚本args: run dev, // 启动脚本的参数cwd: /home/vue/xin_web, // Vite 项目的根目录interpreter: none,…

Matlab图像处理-模式识别

模式识别 模式识别就是用计算的方法根据样本的特征将样本划分到一定的类别中去。模式识别就是通过计算机用数学技术方法来研究模式的自动处理和判读&#xff0c;把环境与客体统称为“模式”。模式识别以图像处理与计算机视觉、语音语言信息处理、脑网络组、类脑智能等为主要研…

奇舞周刊第507期:通过 View Transition API 在状态之间添加丰富的过渡动画

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ 通过 View Transition API 在状态之间添加丰富的过渡动画 W3C 2023 年度全球技术大会 (TPAC2023) 于今年9月 11 - 15 日召开。W3C CSS 工作组成员 Bramus Van Damme(Google) 为本届…

学习ssh配置

三台设备ar1、ar2、ar3 ar1 通过ssh密码方式登陆ar3 ar2 通过免密码方式登陆ar3 ar3的配置如下&#xff1a;进入路由器 rsa local-key-pair creat 选择y&#xff08;yes&#xff09; Input the bits in the modulus[default 512]:2048 //需要创建密钥的长度user-interface v…

RocketMQ生产环境常见问题分析与总结

一、 RocketMQ 如何保证消息不丢失 这个是在面试时&#xff0c;关于 MQ &#xff0c;面试官最喜欢问的问题。这个问题是所有 MQ 都需要面对的一个共性问题。大致的解决思路都是一致的&#xff0c;但是针对不同的MQ 产品又有不同的解决方案。分析这个问题要从以下几个角度入手&…

【C++】bitset位图的简单模拟实现及常见面试题

文章目录 前言一、 bitset模拟实现二、 常见面试题1.给你一百亿个整数&#xff0c;找到只出现一次的数字2. 给两个文件&#xff0c;分别有100亿个整数&#xff0c;我们只有1G内存&#xff0c;如何找到两个文件交集&#xff1f; 前言 快速查找某个数据是否在一个集合中排序 去重…

Java Fluent编程

背景 Fluent Api最早是由Martin Fowler1提出的一种简洁的编程风格, 其每一步的执行都返回一个对象并可用于进一步的方法调用. 这样的编程风格可以很好的简化某些领域的开发, 并显著地提高代码的可读性和可维护性. 无论是在Java的流式api中, 还是众多DLS中都有它的身影. 原因主…

应急响应学习

网站 首先确定网站的基本信息&#xff0c;如语言&#xff0c;数据库&#xff0c;中间件&#xff0c;CMS&#xff0c;系统等。对网站可能存在的漏洞有初步判断 基于时间分析 询问管理员&#xff0c;确定网站发生异常的时间 查看日志&#xff0c;查看状态码&#xff0c;200为成…

Avl树(有详细图解)

目录 介绍 引入 概念 特点 模拟实现 思路 插入 旋转 左旋 无子树 有子树 右旋 无子树 有子树 左右旋 引入(也就是有子树版本的抽象图解) 解决方法(也就是左右旋) 总结 无子树(也就是curright的位置就是newnode) 有子树 模型高度解释 旋转 更新三个…

如何像开发人员一样思考_成为一个问题解决者

程序员在处理大问题时通常会将其分解成多个小问题来解决。这个过程通常被称为“分解”或“分治”&#xff0c;它是一种将复杂问题分解成可管理的小问题的方法。 以下是程序员思考如何将大问题分解成小问题的一些步骤&#xff1a; 确定问题域&#xff1a;程序员需要了解和理解问…

Kettle REST Client获取token调用接口解析JSON入文件实战

Kettle REST Client通过GET获取token以POST方式请求接口解析JSON入文件完整实例 需求说明 通过kettle组件调用接口并解析JSON成结构化数据入文件。 完整实例 解决方法 利用生成记录组件定义URL参数通过REST ClENT组件请求得到TOKEN通过JSON INPUT组件解析接口请求的结果通过…

vue3新语法糖<script setup>

各种使用方法参考&#xff1a;(184条消息) 【vue3学习系列】组合式api中&#xff0c;替代setup()函数的&#xff1c;script setup&#xff1e;特性写法_庞囧的博客-CSDN博客https://blog.csdn.net/pagnzong/article/details/121733394 一、参考&#xff1a;Vue3 script setup …

Git版本控制:入门到精通

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

简单的自托管书签服务NeonLink

什么是 NeonLink &#xff1f; NeonLink 是一个简单且开源的自托管书签服务。它是轻量级的&#xff0c;使用最少的依赖项&#xff0c;并且易于通过 Docker 安装。由于系统要求较低&#xff0c;该应用程序非常适合部署在 RaspberryPI 上。 安装 在群晖上以 Docker 方式安装。 …

图片可变码怎么做?可编辑二维码制作教程

现在很多人会将拍摄的图片转二维码来展示&#xff0c;这种方法能够有效的让更多人更快的查看图片内容&#xff0c;那么图片生成二维码该怎么做呢&#xff1f;有些小伙伴知道现在二维码可以在图案不变情况下修改内容&#xff0c;如果我们需要不断填充照片&#xff0c;那么这种类…

4.基本IO口操作

CC2530端口资源&#xff1a;三个端口&#xff0c;表示为 P0、P1 和 P2。P0 和 P1 是完全的 8 位端口&#xff0c;而 P2 仅有 5 位可用 CC2530的IO口的一些功能&#xff1a; 通用IO口、外设IO口&#xff08;定时器、USART、ADC&#xff09; 输入引脚、输出引脚 当输入时&#…