1使用ElasticStack构建搜索能力
学习目标
- 理解搜索系统及解决方案
- 掌握Elastic Stack技术栈
目录
- 搜索场景和解决方案
- Elastic Stack
- 搜索系统的开发过程
搜索场景和解决方案
搜索工程化、智能化
搜索引擎特性
业务特征:以文本为中心,以读取为主操作,面向文档,灵活的、非结构化数据模式、内容关联性
技术特征:海量文档数据、可扩展、容易部署、查询优化、结果按相关性排序
两大类场景
- 关键字搜索(全文搜索)
多元搜索条件、过滤、转化、展示 - 排名检索
置顶搜索、自定义排序规则
与数据库查询区别
场景-多元化:多条件查询
交互-定制化:自动热词提示,自动填充等
性能-高性能:分布式环境下海量数据搜索性能问题
如何做搜索
- 倒排索引
- 评分匹配
搜索引擎执行流程
- 构建索引
收集数据,构建索引文档 - 索引维护
- 查询时搜索索引
- 展现结果
实现
- lucene 底层索引创建、维护、搜索
信息检索工具包,不是一个完整的搜索应用,提供索引能力的工具包 - Elastic Search/Solr 高层服务和体验
企业级的搜索引擎系统
Elastic Stack
- Elastic Search
存储与搜索 - Logstash
日志管理,数据采集,加工 - Kibana
数据可视化 - Beats
采集数据
Elastic Search
企业级应用,功能:分页排序、自动补全、拼写纠错、展示高亮
技术角度:支持扩展与分布式架构
技术选型 ES vs Solr
- ES内置分布式部署组件,开箱即用,Solr依赖外部组件,部署略显复杂
- Solr索引改变会阻塞IO
- 数据量不大时Solr有优势,数据量增加ES无明显的性能损失,而Solr会明显变慢
搜索系统的开发过程
- 创建索引和文档
- 集成分词和词库
- 实现多元化搜索
- 打造搜索平台化
创建索引和文档
对比关系型数据库
数据库 - 索引
表 - 类型
列 - 字段
行 - 文档
集成分词和词库
分析器
- 多语言分析器 Standard
- 中文分析器 IK
词库
- 语义相关
停用词、同义词、敏感词
- 行为相关
热搜词、相关搜索词
实现多元化搜索
- 搜索输入
搜索词补全、搜索词纠错、搜索词推荐 - 搜索执行
单字段搜索、多字段搜索、聚合搜索 - 搜索输出
搜索高亮显示