Elastic Stack学习(二)

文章目录

搜索的概念

用户输入想要的关键词,返回含有该关键词的所有信息。

业务场景:

  • 互联网搜索:谷歌、百度、各种新闻首页。
  • 站内搜索(垂直搜索):企业OA查询订单、人员、部门,电商网站内部搜索商品(淘宝、京东)场景。

垂直搜索的弊端(数据库做搜索)

  • 存储问题:电商网站商品上亿条时,涉及到单表数据过大必须拆分表,数据库磁盘占用过大必须分库(mycat)。
  • 性能问题:解决存储问题后,商品数据量过大时,上亿条数据的商品名字段逐行扫描,性能低。
  • 无法分词:例如搜索“笔记本电脑”,只能搜索完全和关键词一样的数据,当数据量小时,搜索“笔记电脑”,“电脑”数据要不要给用户。

对于大型互联网项目,数据级别为PB级,不会采用数据库做搜索。

倒排索引【重要】

倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因此称为倒排索引 (inverted index)。

举一个例子就是当我们搜索“漫威电影”的时候,会对“漫威电影”这个词进行分词,然后去查询每个分词包含的索引,处理后返回数据。
Elastic Stack学习(二)

全文检索

全文检索(Full-Text Retrieval)是指以文本作为检索对象,找出含有指定词汇的文本。

在全文检索中,有以下处理特点:

  • 只处理文本
  • 不处理语义
  • 搜索时英文不区分大小写
  • 结果列表有相关度排序

对于全文检索,我们更关心的方便快捷,所以在信息检索工具中,全文检索是最具通用性和实用性的。

Lucene

Lucene是一个Jar包,封装了全文检索的引擎、搜索的算法代码。开发时引入Lucene的Jar包,通过API开发搜索相关业务,底层会在磁盘建立索引库。

什么是Elastic Search?

我们都知道Lucene不支持分布式,因此对于Lucene集群有三个问题需要考虑:

  • 数据如何分布
  • 数据如何交互
  • 数据如何备份

Elastic Search的出现解决了以上的问题:

  • 分片机制 解决数据分布
  • 平行节点 解决数据交互
  • 副本机制 解决数据备份

Elastic Search的功能

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

  • 搜索:互联网搜索、电商网站站内搜索、OA系统查询。

  • 数据分析:电商网站查询近一周哪些品类的图书销售前十。

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

  • 全文检索:搜索商品名称包含Java的图书,select * from books where book_name like "%Java%";

  • 结构化检索:搜索商品分类为Spring的图书都有哪些,select * from books where category_id='Spring';

  • 数据分析:分析每一个分类下有多少种图书,select category_id,count(*) from books group by category_id;

海量数据近实时处理

  • 分布式:ES自动可以将海量数据分散到多台服务器上去存储和检索,经行并行查询,提高搜索效率。

  • 近实时:数据库上亿条数据查询,搜索一次耗时几个小时,是批处理 (batch-processing)。而ES是秒级别,只需秒级即可查询海量数据,所以称为近实时。

Elastic Search的使用场景

国外

  • *:类似百度百科,“网络七层协议”的*,全文检索,高亮,搜索推荐等。

  • GitHub:搜索上千亿行代码。

  • 电商网站:检索商品 。

  • 日志数据分析,Logstash采集日志,ES进行复杂的数据分析。

  • 商品价格监控网站:用户设定某商品的价格阈值,当低于该阈值的时候,发送通知消息给用户。

国内

  • 百度搜索:第一次查询的时候使用的ES。

  • OA、ERP系统站内搜索。

Elastic Search的特点

  • 可拓展性:大型分布式集群(数百台服务器)技术,处理PB级数据。小型项目可以部署在单机。大数据领域使用广泛。

  • 技术整合:将全文检索、数据分析、分布式相关技术整合在一起:Lucene(全文检索),商用的数据分析软件(BI软件),分布式数据库 (mycat) 。

  • 部署简单:开箱即用,很多默认配置不需关心。拓展只需多部署几个实例即可,负载均衡、分片迁移集群内部可以自己实施。

  • 接口简单:使用Restful API经行交互,跨语言。

  • 功能强大:Elastic Search作为传统数据库的一个补充,提供了数据库不能提供的很多功能,如全文检索,同义词处理,相关度排名。

上一篇:ObjectARX学习笔记(二十七)---如何拷贝将一个AcDbDatabase拷贝到另一张dwg里面


下一篇:centos安装elasticsearch