1使用ElasticStack构建搜索能力

学习目标

  • 理解搜索系统及解决方案
  • 掌握Elastic Stack技术栈

目录

  • 搜索场景和解决方案
  • Elastic Stack
  • 搜索系统的开发过程

搜索场景和解决方案

搜索工程化、智能化

搜索引擎特性

业务特征:以文本为中心,以读取为主操作,面向文档,灵活的、非结构化数据模式、内容关联性
技术特征:海量文档数据、可扩展、容易部署、查询优化、结果按相关性排序

两大类场景

  • 关键字搜索(全文搜索)
    多元搜索条件、过滤、转化、展示
  • 排名检索
    置顶搜索、自定义排序规则

与数据库查询区别

场景-多元化:多条件查询
交互-定制化:自动热词提示,自动填充等
性能-高性能:分布式环境下海量数据搜索性能问题

如何做搜索

  • 倒排索引
  • 评分匹配

搜索引擎执行流程

  1. 构建索引
    收集数据,构建索引文档
  2. 索引维护
  3. 查询时搜索索引
  4. 展现结果

实现

  • lucene 底层索引创建、维护、搜索
    信息检索工具包,不是一个完整的搜索应用,提供索引能力的工具包
  • Elastic Search/Solr 高层服务和体验
    企业级的搜索引擎系统

Elastic Stack

  • Elastic Search
    存储与搜索
  • Logstash
    日志管理,数据采集,加工
  • Kibana
    数据可视化
  • Beats
    采集数据

企业级应用,功能:分页排序、自动补全、拼写纠错、展示高亮
技术角度:支持扩展与分布式架构

技术选型 ES vs Solr

  • ES内置分布式部署组件,开箱即用,Solr依赖外部组件,部署略显复杂
  • Solr索引改变会阻塞IO
  • 数据量不大时Solr有优势,数据量增加ES无明显的性能损失,而Solr会明显变慢

搜索系统的开发过程

  • 创建索引和文档
  • 集成分词和词库
  • 实现多元化搜索
  • 打造搜索平台化

创建索引和文档

对比关系型数据库
数据库 - 索引
表 - 类型
列 - 字段
行 - 文档

集成分词和词库

分析器
- 多语言分析器 Standard
- 中文分析器 IK

词库
- 语义相关
停用词、同义词、敏感词
- 行为相关
热搜词、相关搜索词

实现多元化搜索

  • 搜索输入
    搜索词补全、搜索词纠错、搜索词推荐
  • 搜索执行
    单字段搜索、多字段搜索、聚合搜索
  • 搜索输出
    搜索高亮显示

打造搜索平台化