ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Elastic Stack学习(二)

2022-01-02 15:31:17  阅读:205  来源: 互联网

标签:数据分析 Search Elastic 学习 全文检索 搜索 数据 Stack


文章目录

搜索的概念

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

业务场景:

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

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

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

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

倒排索引【重要】

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

举一个例子就是当我们搜索“漫威电影”的时候,会对“漫威电影”这个词进行分词,然后去查询每个分词包含的索引,处理后返回数据。
在这里插入图片描述

全文检索

全文检索(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作为传统数据库的一个补充,提供了数据库不能提供的很多功能,如全文检索,同义词处理,相关度排名。

标签:数据分析,Search,Elastic,学习,全文检索,搜索,数据,Stack
来源: https://blog.csdn.net/MAKEJAVAMAN/article/details/122275613

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有