ElasticSearch 介绍及应用场景

简介

ElasticSearch 是当前流行的企业级搜索引擎,能够达到实时搜索,稳定,可靠,快速,安装使用方便,它提供了一个分布式多用户能力的全文搜索引擎。好官方啊,到底它是个啥鸟,咱们还是老规矩,

搜索

举个简单的例子,比如要买手机,你登陆京东后,在搜索框搜索”手机“,会出现N个手机和手机周边的搜索数据


image.png

常见搜索

百度、Google:我们想寻找一个我们喜欢的电影或者书籍就会去百度或者Google搜索一下。
互联网搜索:电商搜索商品,招聘网站搜索简历或者岗位
OA系统的搜索:员工管理搜索,会议管理搜索

数据库搜索

数据都是存储在数据库里面的,如电商网站的商品信息,如果从消费者去做搜索功能,我们会这么设计。


image.png

我们想要搜索手机,我们会这样写SQL

select * from tb_product t where t.`name` ='手机%'

存在问题

第一、如果数据量在几万或者几十万时候,咱们可以快速查出,大家有没有想过,如果数据量在百万千万亿级别的时候,这样的查询还能满足我们的业务?
从早上开始搜索,到晚上估计还没检索完毕,我估计客户会疯掉住院😔。

第二、不能将搜索词拆分开来,只能搜索名字是“手机”开头的手机商品,如果想搜出“华为手机”或者”手机壳“那是搜索不出来的。

第三、快速聚合,实时检索,咱们看京东搜索手机那个图,一输入手机,能实时检索出符合搜索内容有多少个商品。如果是数据库存储,实时与数据库交互,数据库早晚的崩的面目全非,估计的跑路了。

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

全文检索,倒排索引和Lucene

倒排索引

倒排索引也叫反向索引,有反向索引必有正向索引。通俗来讲,正向索引是通过key找value,反向索引则是通过value找key。
倒排列表记录了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息,每条记录称为一个倒排项(Posting)。根据倒排列表,即可获知哪些文档包含某个单词。
比如我们百度大话西游,但是手抖动输入了”大话游“,看到返回的结果就是大话西游,结果确实是我想要找到的内容。


image.png

包括大话西游游戏,大话西游电影,大话西游电视剧等各种信息,倒排索引就是将数据或者文档中的关键词拆分构建一个大表,每个文档会记录文档编号(DocID),单词在这个文档中出现的次数(TF)及单词在文档中哪些位置出现过等信息,这样与一个文档相关的信息被称做倒排索引项(Posting)。所以我们一搜索关键词,这些文档全部都会查询出来。

全文检索

当我们输入“大话游”,会被拆分成”大”,“话游”2个词,用2个词去倒排索引里面去检索数据,检索到的数据返回。整个过程就叫做全文检索


image.png

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

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

Lucene

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

Elasticsearch的包含那些功能

第一、分布式的搜索引擎和数据分析引擎

搜索:百度,网站的站内搜索,IT系统的检索
数据分析:
电商网站,最近一周手机商品销量排名前10的商家有哪些;
新闻网站,最近1个月访问量排名前3的新闻版块是哪些

第二、 全文检索,结构化检索,数据分析

全文检索:我想搜索商品名称包含手机的商品,select * from products where product_name like "%手机%"
结构化检索:我想搜索商品分类为电子数码的商品都有哪些,select * from products where category_id='电子数码'

部分匹配、自动完成、搜索纠错、搜索推荐
数据分析:我们分析每一个商品分类下有多少个商品,select category_id,count(*) from products group by category_id

第三、对海量数据进行近实时的处理

分布式:ES自动可以将海量数据分散到多台服务器上去存储和检索
海量数据的处理:分布式以后,就可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的处理了

近实时:检索个数据要花费1小时(这就不要近实时,离线批处理,batch-processing);在秒级别对数据进行搜索和分析

跟分布式/海量数据相反的:lucene,单机应用,只能在单台服务器上使用,最多只能处理单台服务器可以处理的数据量

Elasticsearch的适用场景

(1)维基百科和百度百科,手机维基百科,全文检索,高亮,搜索推荐。

(2)The Guardian(国外新闻网站),类似搜狐新闻,用户行为日志(点击,浏览,收藏,评论)+社交网络数据(对某某新闻的相关看法),数据分析,给到每篇新闻文章的作者,让他知道他的文章的公众反馈(好,坏,热门,垃圾,鄙视,崇拜)

(3)Stack Overflow(国外的程序异常讨论论坛),IT问题,程序的报错,提交上去,有人会跟你讨论和回答,全文检索,搜索相关问题和答案,程序报错了,就会将报错信息粘贴到里面去,搜索有没有对应的答案

(4)GitHub(开源代码管理),搜索上千亿行代码。

(5)电商网站,检索商品。

(6)日志数据分析,logstash采集日志,ES进行复杂的数据分析(ELK技术,elasticsearch+logstash+kibana)

(7)商品价格监控网站,用户设定某商品的价格阈值,当低于该阈值的时候,发送通知消息给用户,比如说订阅手机的监控,如果iphone的手机低于3000块钱,就通知我,我就去买

(8)BI系统,商业智能,Business Intelligence。比如说有个大型商场集团,BI,分析一下某某区域最近3年的用户消费金额的趋势以及用户群体的组成构成,产出相关的数张报表,**区,最近3年,每年消费金额呈现100%的增长,而且用户群体85%是高级白领,开一个新商场。ES执行数据分析和挖掘,Kibana进行数据可视化国内。

(9)国内:站内搜索(电商,招聘,门户,等等),IT OA系统搜索(OA,CRM,ERP,等等),数据分析(ES热门的一个使用场景)

ElasticSearch的特点

(1)可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司;也可以运行在单机上,服务小公司

(2)Elasticsearch不是什么新技术,主要是将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;lucene(全文检索),商用的数据分析软件(也是有的),分布式数据库(mycat)

(3)对用户而言,是开箱即用的,非常简单,作为中小型的应用,直接3分钟部署一下ES,就可以作为生产环境的系统来使用了,数据量不大,操作不是太复杂

(4)数据库的功能面对很多领域是不够用的(事务,还有各种联机事务型的操作);特殊的功能,比如全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理;Elasticsearch作为传统数据库的一个。

简介

接下来可以看下Windows 环境安装Elasticsearch
一步步去更好的学习Elasticsearch

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343