ES--001--初体验

  • Paas平台?

    • Saas 平台 购买一个软件服务。定制一款符合自己公司软件,很难
    • PaaS 平台即服务(比如,数据存储服务,文件存储服务,对象存储)---- 可以定制模块化服务
  • 面临问题:

    • 数据检索 数据量在 10亿 到 100亿
      • 数据如何存储
      • 如何降低成本
      • 检索效率
基本概念
  • 数据分为两类
    • 结构化数据:值具有固定格式或有限长度的数据,如数据库,元数据等
    • 非结构化数据:值不定长或无固定格式的数据,如互联网数据,邮件,Word文档。也称全文数据。
  • 全文检索:把非结构化数据转换为有规律的结构化数据,从数据中获取数据的过程
  • 索引:从非结构化数据中提取出的然后重新组织的信息。
  • 全文数据的两种搜索方式
    • 顺序扫描法:顺序扫描每个文档内容,看看是否有要搜索的关键字,实现查找文档的功能,根据文档找词。
    • 反向索引法:提前将搜索的关键字建立索引,然后再根据索引查找文档,也就是根据词找文档。在这里插入图片描述
场景
  • 百度搜索—搜索引擎–》搜索网页
  • 站内搜索—阿里,腾讯–》根据关键词,检索索引文档数据
  • 系统文件搜索—百度文库
相关技术
  • Lucene
  • Solr:使用rest方式的http请求,远程API的调用,数据量很大的,很慢
  • ES:使用rest方式的http请求,远程API的调用,对于数据的安全性,高可用很好,当数据很大时,比Solr全文搜索更快。
ES vs Solr
  • 区别
    • 当单纯的对已有数据进行搜索时,Solr更快
    • 当实时建立索引时,Solr会产生io阻塞,查询性能较差,ES具有明显的优势。
    • 随着数据量的增加,Solr的搜索效率会变的更低,而ES没有明显的变化。
  • 总结
    • 安装都简单
    • Solr利用ZK进行分布式管理,而ES自身带有分布式协调管理功能
    • Solr支持更多格式的数据,而ES仅支持json文件格式
    • Solr官方提供的功能更多,而ES本身更注重于核心功能,高级功能多有第三方插件提供
    • Solr在传统的搜索应用中表现好于ES,但在处理实时搜索应用时效率明显低于ES。
全文搜索
  • 全文检索—搜索服务,思考的问题
    • 数据往哪里存储
      • 索引库---- Solr,ES ---- 自检构建一个索引库(存储索引数据)
    • 全文检索,数据从哪儿查询?
      • 索引库
    • 数据从哪里来
      • 电商网站:搜索是商品—》Mysql(商品表)
      • 百度网站:网站 ---- 爬虫 ---- 爬取网页
流程

在这里插入图片描述

  • 全文检索的流程分为两大流程,索引创建,搜索索引
    • 索引创建:将现实世界中所有的结构化数据和非结构化数据提取信息,创建索引的过程
    • 搜索索引:就是得到用户的查询请求,搜索创建的索引,然后返回结果的过程。在这里插入图片描述
什么是索引
  • 索引:通过关键词,检查出整个内容,那么关键字就称为索引。即从非结构化数据中提取出的然后重新组织的信息,成为索引,比如字典,字典的拼音表和部首表就相当于字典的索引,对每个字的解释都是非结构化的,如果字典没有音节表和部首表,在辞海中找一个字只能顺序扫描。

在这里插入图片描述

什么是文档
  • Document:可以理解为数据库一行的数据。具有结构化的数据。
    在这里插入图片描述
原始文档(原始内容)
  • 原始内容:原始的数据内容,包括互联网的网页,数据库的数据,磁盘上的文件等。
获取文档
  • 采集数据,从互联网,数据库,文件系统中等获取需要搜索的原始信息。
  • 目的:为了将原始内容存储到Document对象上。变成结构化数据。
总的搜索流程
  • 如果使用es的话,索引词典是es实现的
  • 索引字典保存到磁盘中。
  • 当搜索时,如果搜索的信息很长,会进行分词,然后找到索引词典的“月”,然后找到文档,“床前明月光,疑是地上霜…”;
    在这里插入图片描述
分析文档
  • 流程图
    在这里插入图片描述
  • term就是总流程中的索引词典中的任意一个,好比“月”,“前”等等,多个term就构成了索引词典
  • 分析文档主要通过分词组件语言处理组件完成。
索引文档

在这里插入图片描述

创建索引流程
搜索索引流程
  • 索引库索引结构在这里插入图片描述
  • 搜索的时候,先针对域字段找到对应的索引词典,然后找到搜索的值,即分词,比如“月”,然后通过文档ID,词语频率找到Document
  • tf(Term Frequency) :指此Term在文档中出现了多少次,tf越高说明越重要。
  • df(Document Frequency):指有多少文档包含此Term。df越大说明越不重要。
  • 是否分词决定了,值是否进行分词,如上面的床前明月光,就进行了分词,最后为“床”,“前”,“明月”,“光”,而标题静夜思就没有进行分词。
  • Lucene的Field域的方法在这里插入图片描述
  • 每个域字段可以理解理解为都有一个独立的索引字典,不同索引字典之间独立,但是是一个大的索引字典,只是不同域对象的索引字典之间独立。
设计索引库
  • 主要看最后的搜索结构是否需要显示,如果需要显示就将结果涉及的域,进行结构化数据之后进行分词,然后存储到索引库中。同时,分词不分词也可以由自己来判断。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值