Elasticsearch简介和原理
日期: 2019-09-01 分类: 个人收藏 354次阅读
1. ES简介
- Django
- haystack + es
- haystack起到的作用类似于orm 2.x
- 版本
- 2.x 5.x 6.x
- 语法有一定区别, 不兼容
- 概念
- 既是搜索引擎, 也是数据库
- 主要用于全文检索, 和搜索无关的字段不应该保存在ES中
- 既是搜索引擎, 也是数据库
- 特点
- 支持分布式 分片存储
- 虽然是Java开发的, 但是封装了一套http访问接口, 使用restful的设计风格 端口9200
- 文档型数据库 存字符串, 不是表, 也不是键值对
- 最受欢迎的搜索引擎
2. ES搜索原理 (重点)
- 关系数据库查询的缺点
- 关键词检索
# 全文检索"python" 范围: 文章标题 和 文章内容
select * from t_article where title like "%python%" or content like "%python%" - 即使title和content字段建立了索引, 也不能完美使用索引, 只对"python%"的查询才会使用索引, 慢查询效率极低
- 关键词检索
- ES搜索的原理
- 分析
- 建立倒排索引
- 相关性排序
- 分析
- 提取和优化关键词
- 分词
- 将搜索内容以词条形式拆分
- 标准化
- 忽略大小写
- 忽略单复数
- 同义词合并
- 处理停用词
- 谓词, 语气词, 主语
- 倒排/反向索引
- 正向索引
- 一条文档为一条记录, 字段为关键词的信息(位置&次数)
- 缺点
- 收录到搜索引擎的文档数量是天文数字, 需要查询所有记录, 无法达到实时性
- 反向索引
- 以关键字为一条记录, 文档id为字段
- 虽然关键字数量庞大, 但是一旦查询到关键词, 就可以锁定与其有关的所有文档, 效率高于正向索引
- 网站SEO时, 要在网页/百度录入时设置精准的关键词, 目的就是为快速反向索引
- 正向索引
文档1 The quick brown fox jumped over the , lazy+ dog
文档2 Quick brown foxes leap over lazy dogs in summer
id quick brown fox jump dog summer
1 1 1 1 1
2 1 1 1 1
....
10000000
关键词 文档1 文档2 ... 文档100000
qucik 1
brown 1 1
fox
dog 1
summer
- 相关性排序
- 对搜索结果按照权重进行排序
- 算法 TF/IDF
- 检索词频率 关键词在文章中出现的次数
- 反向文档频率 多个关键词中的某个如果在大量文章中都出现了, 降低其权重
- 字段长度准则 关键词占文章总长度的比重 比重越高, 相关性越大
- 检索词频率 关键词在文章中出现的次数
- 开发搜索引擎
- 爬虫
- 分布式存储
- 分析
- 建立倒排索引
- 相关性排序
转载于:https://www.cnblogs.com/oklizz/p/11443211.html
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
标签:大数据 数据库 java
上一篇: Elasticsearch--概念和集群
下一篇: 即时通讯--socketio
精华推荐