大白话告诉你Elasticsearch到底是干嘛的?

编程界的小学生

一、什么是搜索

通俗来讲就是在任何场景下你通过输入你想要搜索的内容,然后就期望找到相关度与之匹配的。
比如:

  • 百度、Google等搜索引擎
  • 站内搜索(垂直搜索):淘宝等电商网站/app、招聘网站、新闻网站等

二、检索方式

1、数据库

大白话告诉你Elasticsearch到底是干嘛的?

2、倒排索引

知道了数据库方式的缺点后再来看Elasticsearch所采取的倒排索引方式。
大白话告诉你Elasticsearch到底是干嘛的?

其实倒排索引本质上是一种数据结构,而不是我上面画的表格,我这里是为了容易理解,就采取了表格代理。这种方式原理上比较好理解。倒排索引后面会出专题来说明。

三、什么是Elasticsearch

先说下lucene,lucene就是一个jar包,里面封装好了一些复杂的API以及包含了倒排索引,数据存储到磁盘。也就是说lucene是一种采取了倒排索引的方式进行高效率搜索的框架。但是它api复杂,且不支持集群。而Elasticsearch完美解决了lucene的这些缺点,它天然支持集群,api相对简单,开箱即用。底层还是封装的lucene。

四、Elasticsearch能干嘛

  • 分布式搜索引擎和数据分析引擎

搜索引擎:百度、Google、电商网站等
数据分析引擎:用户行为埋点,常用于大数据分析?你没发现你在某宝或某东搜个东西,后面都给你推送这类的吗?

  • 全文检索、结构化搜索以及聚合

全文检索:全部内容里找包含的关键字:
SELECT * FROM table WHERE name LIKE “%小米%”;
结构化搜索:也称等值匹配。
SELECT * FROM table WHERE name = “小米手机”;
聚合:比如我们分析每一个商品分类下有多少个商品。
SELECT category_id, COUNT(*) FROM table GROUP BY category_id;

  • 海量数据近实时处理

ES自动可以将海量数据分散到多台服务器上去存储和检索,分布式。
海量数据的处理:分布式以后,就可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的
近实时:检索个数据要花费好几分钟这就不叫近实时,ES可以在秒级别对数据进行搜索和分析。

五、Elasticsearch使用场景

  • 百度、*、新闻、电商、Stack Overflow等
  • 各大网站的用户行为日志(比如你搜个商品、你点击某个连接等)
  • BI(Business Intelligence:商业智能),数据分析、挖掘
  • Github
  • ELK
上一篇:Java Script 学习笔记 -- 基础知识


下一篇:lucene-初识