热门搜索引擎ElasticSearch——总述(一)

背 景

  用着MySQL,MongonDB等查询他不香吗?为啥要去搞这个ElasticSearch,这不是找虐吗?其实ElasticSearch盛行的原因有以下几点;

  • 海量数据查询时,MySQL性能确实有瓶颈,不能做到毫秒级别的实时相应;
  • 查询条件手残输入错误,MySQL极有可能查不到数据,ElasticSearch因为支持分词器,依然可以快速查询到结果,如我本来想买个热水壶,但是我输入时抖了下,写成了水壶热,MySQL可能就没有返回结果了,ElasticSearch可以有,原理后续解说。
  • 支持搜索的关键字红色字体显示。

  其实你可以完全将ElasticSearch搜索结果理解为你百度一下的结果网页,会根据你提供的搜索条件,按匹配的权重结果返回给你,那这就是ElasticSearch的奥妙之处,在大数据如火如荼的今天,他火是必然的,不然数据只是死躺在MySQL,HDFS,磁盘等存储容器上的鸡肋一样。

ElasticSearch简介

  ElasticSearchj(简称:ES),不要问我中文名,嘿嘿,因为大家都叫他ES,由于叫ES的东西有点多,平时如果搜索七相关资料,使用全称效果更佳;
  ES是一款使用Java语言编写的基于Lucene为底层的搜索引擎框架,支持分布式全文搜索功能,提供开发者使用的主要有统一的基于RESTful风格的WEB接口和多种开发语言的API;
Lucene:Apache顶级项目,官网:https://lucene.apache.org/,本身是一个搜索引擎的底层,但是使用起来太复杂,不太友好,就连官网也推荐使用solr,而非直接使用,这里如果不是特别必要,咱就理解其为一个Jar包;
分布式:ES本身就能搭建成集群模式,横向扩充能力强;
RESTful风格:操作ES’的方式,根据HTTP请求,执行相应的功能;
全文索引:也叫倒排索引,将需要匹配搜索条件的一段词语根据分词器进行分词,分出的单个词语放到一个分词库中,并且标注这个词隶属于哪一个行目标数据id;于是客户端在搜索时,根据搜索内容也进行分词到分词库中去检索,然后找打匹配的内容,具体如图1;
在这里插入图片描述

图1 全文索引原理图

ElasticSearch官网

   官网:https://www.elastic.co/cn/;

   官网的文档:是最好的学习资源,详细、全面,官网还提供有一些视频:
  传送门:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

  官网中还提供一个中文的权威指南,可以学习,(版本稍老了点是基于2.0的):
  传送门:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

ElasticSearch应用

  • GitHub.com
  • wiki百科
  • 某外卖,快递平台计算送货员距离你还有多少距离。
  • ……

ElasticSearch和sorl的对比

  1. Solr在查询静态数据时,速度较ES更快一些,但是支持实时动态数据,ES速度基本没变,Solr会降低很多;
  2. Solr搭建集群需要借助Zookeeper来协调,ES本身支持集群搭建,不需要第三方插件,相对较为独立;
  3. Sorl对嵌套数据,经纬度等数据类型支持的不算特别好,要自己拼接,ES自带支持的数据类型。
  4. ES对目前的云计算和大数据支持的较为友好;

  目前看起来,solr的唯一优势时资历老,社区可能较多一些,但是个人感觉ES的发展趋势大有取代solr的架势,本人公司也是新的需求都在使用ES,老的在solr上的往ES迁移。

ElasticSearch和MySQL的对比

  上图吧,直接一目了然,这样对你理解ES的数据结构有比较好的帮助,对比如图2,ES的数据样式如图3

在这里插入图片描述

图2 ES和MySQL的专业术语对比

  注意:关于类似于MySQL的表级别的Type,需要根据ES的版本而论:
ES5.X及其以前,一个Index下可以有多个Type
ES6.X,一个Index下可以有一个Type
ES7.X及其以后,一个Index下不需要Type

在这里插入图片描述

图3 ES的数据样式

ElasticSearch的由来

  起源于一个浪漫的爱情故事;

许多年前,一个名叫Shay Banon的开发者,带着新婚妻子去伦敦生活,在得知妻子想从事厨师工作后,准备利用自己所学为妻子开发一个食谱搜索引擎,他开始使用Lucene的一个早期版本。
但是尝试之后,他发现直接使用Lucene给没有任何开发经验的妻子而言是非常困难的,因此Shay 开始对Lucene进行封装。不久他发布了他的第一个基于Lucene的用java编写的开源项目 Compass。
后来Shay找到了一份跟高性能和分布式有关的工作,然后发现这份工作对实时、分布式搜索引擎的需求尤为突出,于是他决定重写Compass,把它变为一个独立的服务并取名Elasticsearch,再到后来Elasticsearch发布了第一个公开版本,从此以后,Elasticsearch已经成为了 Github 上最活跃的开源项目之一。
据说,Shay的妻子还在等着她的食谱搜索引擎,而他已经在大公司忙的“一发不可收拾”…

ElasticSearch的组成

  1. ES集群搭建;
  2. 分词器搭建,中文常用IK分词器;
  3. 管理界面插件Kibana,Head搭建;

  以上就是ES的一些入门介绍,安装及使用后续更新中……

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

╭⌒若隐_RowYet——大数据

谢谢小哥哥,小姐姐的巨款

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值