Elasticsearch是什么
elasticsearch是一款大数据场景下的分布式全文搜索、统计分析引擎
elasticsearch提供了什么功能1. 数据存储
针对大数据的具有容错机制的分布式存储功能,数据存储的原理将在该系列的其他文章中单独介绍。
2. 数据搜索功能
- 根据记录id进行搜索
- 针对某字段进行精确值搜索(term/terms关键字)
- 对数值及日期字段进行区间搜索
- 支持对IP地址、经纬度等特殊数据格式的搜索
- 针对文本字段的相关搜索(使用match关键字),并返回相关性得分
这里会涉及到一些机器学习与自然语言处理的知识,简单举一个例子:搜索“攀岩”,会得到攀岩、爬山等结果。具体原理后续系列详细介绍。
- 搜索文本中的短语(使用match_phrase关键字)
- 支持高亮搜索,即将搜索结果中被搜索的字段进行高亮标识
- 支持分页搜索和TopN搜索
- 多个搜索条件可以进行或、且、非组合
- 多个字段搜索,可以按照某个字段最佳相关度排序(dis_max ),按照总相关度排序(tie_breaker)等。
以上列出了一些常用的主要的搜索功能,还有很多小众场景也有一些非常灵活的搜索方式。
3. 数据分析功能
针对搜索结果进行统计分析
- 针对某字段聚合,然后统计分析。
举例:针对性别做聚合,统计搜索结果中的男女数量。也可针对聚合之后的其他字段做统计分析,比如聚合之后,对年龄字段求平均值(或求和等),统计男女的平均年龄。
- 针对统计分析输出各类图形式数据,如条形图、折线图、饼状图甚至地理位置图等
下图是一些常见统计分析图:
应用场景- 搜索推荐
类似于百度搜索引擎,信息流推荐,电商产品搜索等场景
- 日志分析
Elasicsearch诞生之初最先再运维圈流行,主要用于海量日志的存储分析
- 指标监控
主要适用于对于实时性要求不高的场景,比如按天监控统计服务性能与可用性等
- 数据可视化
- 其他近似实时性场景海量数据采集分析系统
elastic系列产品已经有了针对此类场景的相对比较完善的解决方案( Elasticsearch Kibana Logstash),目前ELK系统再互联网开发技术栈中已经流行开来。
相关文章: