ES 学习总结(上)
Elasticsearch 是一款基于 Lunece 的分布式、可扩展、实时的搜索与数据分析引擎。
版本变更
版本号 | 发布时间 | 内容 |
---|---|---|
0.4 | 2010-02 | 第一次发布 |
1.x | 2014-01 | |
2.x | 2015-10 | |
5.x | 2016-10 | Lucene 6.x,默认打分机制从 TF-IDF 改为 BM 25新功能:支持 Keyword 类型性能优化:移除竞争锁、支持分片上聚合的缓存 |
6.x | 2017-10 | Lucene 7.x新功能:跨集群复制、索引生命周期管理、支持 SQL性能优化:索引时进行排序,有效存储稀疏字段,降低了存储成本 |
7.x | 2019-04 | Lucene 8.0新功能:新的集群协调实现、Script score query性能优化:默认的主分片数从 5 改为 1 |
8.x | 2022-02 | Lucene 9.0新功能:原生支持 NLP、原生矢量搜索 |
Elastic Stack 生态圈
Elasticsearch Best Practice Architecture
1. Logstash:数据处理管道
开源的服务器端数据处理管道,支持从不同来源采集数据,转换数据,并将数据发送到不同的存储库中。
Logstash,由 Jordan Sisel 创建于 2009 年,最初用来做日志的采集与处理,在 2013 年被 Elasticsearch 收购。
特性:
- 实时解析和转换数据,从 IP 地址破译出地理坐标;将 PII 数据匿名化,完全排除敏感字段。
- 可扩展,200 多个插件(日志、数据库、Arcsigh、Netflow)
- 可靠性安全性,Logstash 会通过持久化队列来保证至少将运行中的事件送达一次;数据传输加密
- 监控
2. Kibana(Kibana = Kiwifruit + Banana):可视化分析
数据可视化工具,帮助用户解开对数据的任何疑问
Kibana,创始人是 Rashid Khan。Kibana 是基于 Logstash 的工具,2013 年加入 Elastic 公司。
3. Beats:轻量的数据采集器
Go 语言开发
4. X-Pack:商业化套件
6.3 之前的版本,X-Pack 以插件方式安装
ELK 应用场景
- 网站搜索、代码搜索
- 日志管理分析、指标监控
相似度模型
相似度指文档与查询条件匹配的程度,ES 对每个匹配查询条件的结果进行了算分_score,分数越高相关度越高。
常见相似度模型如下,可参考 Available Similarities:
- BM25(Best Match):ES 默认的相关性算分机制,它考虑了查询词项的文档频率、文档长度和查询长度等因素,通常用于全文搜索场景。ES 8.6 similarity score、Okapi BM25算法
- TF-IDF(Term Frequency/Inverse Document Frequency):通过计算查询词项在文档中的频率和在整个文档集合中的逆文档频率来确定相关性得分。TF-IDF算法介绍及实现
- LM:LM(Language Model)是一种基于语言模型的评分模型,使用文档中词项出现的概率来计算文档得分,通常用于自然语言处理、语音识别等场景。Language Models in Elasticsearch
- IB:IB(Information-Based)是一种基于信息论的评分模型。
对于信息检索工具,常见的性能评估指标:
- 查准率(Precision):尽可能返回较少的无关文档,通常用于衡量搜索工具的检索效果。
召回率(Recall):尽可能返回较多的相关文档,通常用于衡量搜索工具的覆盖率。
参考 Elasticsearch Query-Time Strategies and Techniques for Relevance