Elasticsearch扫盲篇

1. 什么是搜索?

在日常的工作和学习中,当我们说想找查询任何的信息的时候,可能第一时间会想到上百度或者谷歌去搜索一下。比如说找一部自己喜欢的电影,或者说找一本喜欢的书,或者找一条感兴趣的新闻。但是百度和谷歌不等于搜索,他们只是我们搜索时使用的工具。

搜索,就是在任何场景下,查找你想要的信息。这个时候需要输入一段你要搜索的关键字,然后就期望找到这个关键字相关的信息。

2. 用数据库做搜索

对于大多数程序员而言,大家都清楚数据都是存储在数据库里面的。比如说电商网站的商品信息,招聘网站的职位信息,新闻网站的新闻信息等等。所以说,很自然的我们会考虑到去使用数据库去进行搜索,例如使用MySQL数据库进行查询。

假如我们想要购买一件男士的T恤,在购物平台上搜索『男士T恤』,那么如果直接使用关键词在数据里中模糊搜索可能是怎么样的呢?

select * from table where pruduct_name like '%男士T恤%'

我们且不考虑数据库的全文索引什么的,假如电商网站中国的商品数量只有1000万个(其实远远不止吧),那么基本上就要查找1000万次,且每次都需要加载商品的名称字段的整段字符串,因为这种模糊查询很难使用索引来进行优化。

直接使用数据库进行搜索有几个严重的问题:

  1. 就拿商品描述这个字段来说,他的字段的长度可能有十几、上百个字,在查询的时候要对每条记录的所有文本进行扫描,来判断字段中是否包含用户指定的关键词。
  2. 没办法将搜索词拆分开来,尽可能去搜索更多的符合你的期望的结果,比如输入“男士T恤”,就搜索不出来“男士黑色T恤”。
  3. 用数据库来进行搜索,由于数据量非常大,检索起来性能会非常的差。

3. 什么是Elasticsearch

ElasticSearch是一款非常强大的、基于Lucene的开源搜索及分析引擎;它是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。

它被用作全文检索结构化搜索分析以及这三个功能的组合。除了搜索,结合Kibana、Logstash、Beats开源产品,Elastic Stack(简称ELK)还被广泛运用在大数据近实时分析领域,包括:日志分析指标监控信息安全等。它可以帮助你探索海量结构化、非结构化数据,按需创建可视化报表,对监控数据设置报警阈值,通过使用机器学习,自动识别异常状况

关于ElasticSearch的由来还有一个小故事:

许多年前,一个刚结婚的名叫 Shay Banon 的失业开发者,跟着他的妻子去了伦敦,他的妻子在那里学习厨师。 在寻找一个赚钱的工作的时候,为了给他的妻子做一个食谱搜索引擎,他开始使用 Lucene 的一个早期版本。

直接使用 Lucene 是很难的,因此 Shay 开始做一个抽象层,Java 开发者使用它可以很简单的给他们的程序添加搜索功能。 他发布了他的第一个开源项目 Compass。

后来 Shay 获得了一份工作,主要是高性能,分布式环境下的内存数据网格。这个对于高性能,实时,分布式搜索引擎的需求尤为突出, 他决定重写 Compass,把它变为一个独立的服务并取名 Elasticsearch。

第一个公开版本在2010年2月发布,从此以后,Elasticsearch 已经成为了 Github 上最活跃的项目之一,他拥有超过300名 contributors(目前736名 contributors )。 一家公司已经开始围绕 Elasticsearch 提供商业服务,并开发新的特性,但是,Elasticsearch 将永远开源并对所有人可用。

据说,Shay 的妻子还在等着她的食谱搜索引擎…

刚有多次提到Lucene,ElasticSearch是基于Lucene的。但是Lucene仅仅只是一个库。为了充分发挥其功能,你还需要自己使用Java将Lucene集成到自己的应用程序中。 更糟糕的是,Lucene非常复杂,对于程序员而言学习成本非常的大。而Elasticsearch也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API

根据DB Engine的排名,ElasticSearch已经称为最受欢迎的企业级搜索引擎。

4. 主要功能及应用场景

4.1 主要功能

海量数据的分布式存储以及集群管理

搜索引擎:百度、网站的站内搜索、IT系统的检索

数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些;新闻网站,最近1个月访问量排名前3的新闻版块是哪些

分布式:ES自动可以将海量数据分散到多台服务器上去存储和检索

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

全文检索:搜索商品名称包含牙膏的商品。

结构化检索:搜索商品分类为日化用品的商品都有哪些。

部分匹配、自动完成、搜索纠错、搜索推荐

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

海联数据的处理:可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的处理

近实时:在秒级别对数据进行搜索和分析

4.2 应用场景

  1. 网站搜索、垂直搜索、代码搜索;
  2. 日志管理与分析、安全指标监控、应用性能监控、Web抓取舆情分析;
  • 10
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

编程芝士

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值