Elasticsearch 顶尖高手(1)

1.什么是搜索?

     百度 = 搜索,这是不对的

     垂直搜索(站内搜索)

     互联网的搜索:电商网站,招聘网站,新闻网站,各种app

     IT系统的搜索:OA软件,办公自动化软件,会议管理,项目管理,员工管理

     搜索:就是在任何场景下,找寻你想要的信息,这个时候,会输入一段你要搜索的关键子,然后期望找到这个关键字相关的有些信息

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

  1. 每条记录的指定字段的文本,可能会很长,甚至长达数千或数万个字符
  2. 不能将搜索词拆分开来,尽可能去搜索更多的符合期望的结果

使用数据库实现不太靠谱!!!

3.什么是全文检索和Lucene

  1. 全文检索,倒排索引
  2. Lucene,一个jar包,里面包含了封装好的各种建立倒排索引,以及进行搜索的代码, 包括各种算法。使用java开发时,引入Lucene  jar,然后基于Lucene的api进行开发即可。用Lucene可以将已有数据建立索引,Lucene会在本地磁盘上组织索引的数据结构。另外,也可使用Lucene提供的功能和api来针对磁盘上的索引数据,进行索引。

4.什么是Elasticsearch?

分布式,高性能,高可用,可伸缩的搜索和分析系统

  • 自动维护数据的分布到多个节点的索引的建立,还有搜索请求分布到多个节点的执行
  • 自动维护数据的冗余副本,在某些机器宕机了,不会丢失任何的数据
  • 封装了更多的高级功能,提供了更多高级的支持。可快速开发应用,开发更加复杂的应用:复杂的搜索功能,聚合分析的功能,基于地理位置的搜索

5.Elasticsearch的功能

  1. 分布式的搜索引擎和数据分析引擎
    分布式,搜索,数据分析
  2. 全文检索,结构化检索,数据分析
    全文检索:搜索商品名称包含牙膏的商品
    结构化搜索:搜索商品分类为日化用品的商品都有哪些,select * from products where category_id = ‘日化用品’
    数据分析:分析每一个商品分类下有多少个商品

  3. 对海量数据进行近实时的处理
    分布式:ES自动可以将海量数据分散到多台服务器上去存储和检索
    海量数据的处理:分布式以后,就可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的处理
    尽实时:检索个数据要花费1分钟(这就不叫尽实时,叫离线批处理,batch-processing)。尽实时,就是说对数据的搜索和分析在秒级别

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

6.Elasticsearch 的使用场景

  • 维基百科
  • 新闻网站
  • GitHub
  • 电商网站
  • 日志数据分析,logstash采集日志,ES进行复杂的数据分析(ELK技术,elasticsearch+logstash+kibana)
  • 商品价格监控网站
  • BI系统, 商业智能

7.Elasticsearch的特点

  1. 可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司;也可运行在单机上,服务小公司
  2. 并非新技术,主要是将全文检索,数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES
  3. 对用户而言,开箱即用,非常简单
  4. 数据库的功能面对多领域是不够用的,比如全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理,Elasticsearch作为传统数据库的一个补充,提供了数据库所不能提供的很多功能
posted @ 2019-09-09 22:07  用代码打败魔法  阅读(177)  评论(0编辑  收藏  举报